- 論壇徽章:
- 0
|
chatsever.h
===============================
#ifndef CHATSEVER_H
#define CHATSEVER_H
#include <QMainWindow>
#include<QIcon>
#include<QTcpServer>
#include<QTcpSocket>
#include<QByteArray>
#include<QDebug>
namespace Ui {
class ChatSever;
}
class ChatSever : public QMainWindow
{
Q_OBJECT
public:
explicit ChatSever(QWidget *parent = 0);
~ChatSever();
void startSever();
void stopSever();
private slots:
void on_startBtn_clicked();
void on_stopBtn_clicked();
//處理網(wǎng)絡(luò)客戶端連接的槽函數(shù)
void newConnectionSlots();
//客戶端數(shù)據(jù)
void clientReadyReadSlots();
private:
Ui::ChatSever *ui;
QTcpServer* server;
QTcpSocket* socket;
};
#endif // CHATSEVER_H
=================================
chatsever.cpp
================================
#include "chatsever.h"
#include "ui_chatsever.h"
ChatSever::ChatSever(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::ChatSever)
{
ui->setupUi(this);
ui->startBtn->setIcon(QIcon("D:\\Qt-appli\\ChatSever\\icons\\u.png" );
}
ChatSever::~ChatSever()
{
delete ui;
}
void ChatSever::startSever()
{
//
}
void ChatSever::stopSever()
{
disconnect(server,SIGNAL(newConnection()));
server->close();
}
void ChatSever: n_startBtn_clicked()
{
//啟動(dòng)服務(wù)器
//1.得到相應(yīng)的ip,port
//IPv4_Any
int port=ui->lineEdit->text().toInt();
ui->textEdit->append(tr("%1" .arg(port));
//2.實(shí)例化服務(wù)器對象
server = new QTcpServer(this);
//3.啟動(dòng)監(jiān)聽
connect(server,SIGNAL(newConnection()),this,SLOT(newConnectionSlots()));
// server->listen(QHostAddress::Any,port);
//4.等待處理客戶端連接
server->listen(QHostAddress::Any,10000);
//connect(server,SIGNAL(newConnection()),this,SLOT(newConnectionSlots()));
ui->textEdit->append("listen ..." ;
}
void ChatSever: n_stopBtn_clicked()
{
//
}
void ChatSever::newConnectionSlots()
{
ui->textEdit->append("this is a client ..." ;
socket=server->nextPendingConnection();
connect(socket,SIGNAL(readyRead()),this,SLOT(clientReadyReadSlots()));
}
void ChatSever::clientReadyReadSlots()
{
QByteArray data;
data.clear();
while(socket->bytesAvailable()){
data.append(socket->readAll());
}
ui->textEdit->append("ready read" ;
ui->textEdit->append(data);
} |
|