首先在工程檔案.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);
}