QT TCP通信收發數據


首先在工程文件.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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM