首先在工程文件.pro中加入
QT += network
需要加的頭文件
#include <QTcpServer>
#include <QTcpSocket>
服務端
1.創建初始化對象
mServer = new QTcpServer();
mSocket = new QTcpSocket();
2.關聯客戶端
connect(mServer,SIGNAL(newConnection()),this,SLOT(new_client()));
3.啟動監聽服務
mServer->listen(QHostAddress::Any,1122);
4.接受數據
mSocket = mServer->nextPendingConnection();//與客戶端通信的套接字
connect(mSocket,SIGNAL(readyRead()),this,SLOT(read_client_data()));
5.發送數據
mSocket->write((char*)msg,5);
實現代碼
1 tcpServer::tcpServer(QWidget *parent) : 2 QDialog(parent), 3 ui(new Ui::tcpServer) 4 { 5 ui->setupUi(this); 6 mServer = new QTcpServer(); 7 //關聯客戶端連接信號newConnection 8 connect(mServer,SIGNAL(newConnection()),this,SLOT(new_client())); //連接客戶端 9 //啟動服務器監聽 10 mServer->listen(QHostAddress::Any,1122); 11 } 12 tcpServer::~tcpServer() 13 { 14 delete ui; 15 } 16 void tcpServer::new_client() 17 { 18 mSocket = mServer->nextPendingConnection();//與客戶端通信的套接字 19 //關聯接收客戶端數據信號readyRead信號(客戶端有數據就會發readyRead信號) 20 connect(mSocket,SIGNAL(readyRead()),this,SLOT(read_client_data())); 21 } 22 void tcpServer::read_client_data() 23 { 24 //可以實現同時讀取多個客戶端發送過來的消息 25 QTcpSocket *obj = (QTcpSocket*)sender(); 26 QByteArray msg = obj->readAll(); 27 unsigned short size = msg.size(); 28 unsigned char msg1[10] = {0}; 29 memcpy(msg1, msg.data(), size); 30 qDebug()<<msg1[0]<<msg1[1]<<msg1[2]<<msg1[3]; 31 } 32 33 void tcpServer::on_pushButton_clicked() 34 { 35 unsigned char msg[10]; 36 msg[0]='*'; 37 msg[1]=10; 38 msg[2]=30; 39 msg[4]=1; 40 mSocket->write((char*)msg,5); 41 }
客戶端
1.創建初始化
mSocket = new QTcpSocket();
2.連接服務器,設置IP和端口
mSocket->connectToHost(QHostAddress::LocalHost,1122);
3.接收數據
connect(mSocket,SIGNAL(readyRead()),this,SLOT(read_data()));
QByteArray msg = mSocket->readAll();
4.發送數據
mSocket->write((char*)msg,5);
實現代碼
1 tcpClick::tcpClick(QWidget *parent) : 2 QWidget(parent), 3 ui(new Ui::tcpClick) 4 { 5 ui->setupUi(this); 6 mSocket = new QTcpSocket(); 7 //關聯數據信號 8 connect(mSocket,SIGNAL(readyRead()),this,SLOT(read_data())); 9 //連接服務器,設置ip和端口號 10 mSocket->connectToHost(QHostAddress::LocalHost,1122); 11 } 12 tcpClick::~tcpClick() 13 { 14 delete ui; 15 } 16 void tcpClick::read_data() 17 { 18 QByteArray msg = mSocket->readAll(); 19 unsigned short size = msg.size(); 20 unsigned char msg1[10] = {0}; 21 memcpy(msg1, msg.data(), size); 22 qDebug()<<msg1[0]<<msg1[1]<<msg1[2]<<msg1[3]; 23 } 24 25 void tcpClick::on_pushButton_clicked() 26 { 27 unsigned char msg[10]; 28 msg[0]='*'; 29 msg[1]=30; 30 msg[2]=20; 31 msg[4]=11; 32 mSocket->write((char*)msg,5); 33 }