天天看點

qt和伺服器收發資訊,QT TCP通信收發資料(示例代碼)

首先在工程檔案.pro中加入

QT       += network

需要加的頭檔案

#include

#include

服務端

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);

實作代碼

tcpServer::tcpServer(QWidget *parent) :

QDialog(parent),

ui(new Ui::tcpServer)

{

ui->setupUi(this);

mServer = new QTcpServer();

//關聯用戶端連接配接信号newConnection

connect(mServer,SIGNAL(newConnection()),this,SLOT(new_client())); //連接配接用戶端

//啟動伺服器監聽

mServer->listen(QHostAddress::Any,1122);

}

tcpServer::~tcpServer()

{

delete ui;

}

void tcpServer::new_client()

{

mSocket = mServer->nextPendingConnection();//與用戶端通信的套接字

//關聯接收用戶端資料信号readyRead信号(用戶端有資料就會發readyRead信号)

connect(mSocket,SIGNAL(readyRead()),this,SLOT(read_client_data()));

}

void tcpServer::read_client_data()

{

//可以實作同時讀取多個用戶端發送過來的消息

QTcpSocket *obj = (QTcpSocket*)sender();

QByteArray msg = obj->readAll();

unsigned short size = msg.size();

unsigned char msg1[10] = {0};

memcpy(msg1, msg.data(), size);

qDebug()<

}

void tcpServer::on_pushButton_clicked()

{

unsigned char msg[10];

msg[0]=‘*‘;

msg[1]=10;

msg[2]=30;

msg[4]=1;

mSocket->write((char*)msg,5);

}

用戶端

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);

實作代碼

tcpClick::tcpClick(QWidget *parent) :

QWidget(parent),

ui(new Ui::tcpClick)

{

ui->setupUi(this);

mSocket = new QTcpSocket();

//關聯資料信号

connect(mSocket,SIGNAL(readyRead()),this,SLOT(read_data()));

//連接配接伺服器,設定ip和端口号

mSocket->connectToHost(QHostAddress::LocalHost,9988);

}

tcpClick::~tcpClick()

{

delete ui;

}

void tcpClick::read_data()

{

QByteArray msg = mSocket->readAll();

unsigned short size = msg.size();

unsigned char msg1[10] = {0};

memcpy(msg1, msg.data(), size);

qDebug()<

}

void tcpClick::on_pushButton_clicked()

{

unsigned char msg[10];

msg[0]=‘*‘;

msg[1]=30;

msg[2]=20;

msg[4]=11;

mSocket->write((char*)msg,5);

}