如何用QT库轻松实现TCP通信协议?

更新于
2026-10-10 14:55:36
1阅读来源:SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1031个文字,预计阅读时间需要5分钟。

如何用QT库轻松实现TCP通信协议?

本例展示了如何使用Qt实现简单的TCP通信。以下是大体代码框架,供大家参考:

开发环境:- 操作系统:Win7- 开发软件:Qt 5.5.0

主要功能:- 实现客户端与服务器端之间的连接- 连接成功后,进行数据交换

代码示例:cpp#include

QTcpSocket *socket=new QTcpSocket(this);

// 连接服务器socket->connectToHost(127.0.0.1, 12345);

// 连接信号与槽connect(socket, SIGNAL(connected()), this, SLOT(onConnected()));connect(socket, SIGNAL(disconnected()), this, SLOT(onDisconnected()));

// 连接成功void onConnected() { qDebug() << 连接成功;}

// 连接失败void onDisconnected() { qDebug() << 连接失败;}

注意:以上代码仅为示例,实际应用中可能需要根据具体需求进行调整。

本文实例为大家分享了QT实现简单TCP通信的具体代码,供大家参考,具体内容如下

开发环境:win7
开发软件:Qt5.5.0
下图是实现效果

首先点击客户端的connect与服务器连接,连接成功后再服务器会显示“成功连接”,然后在客户端会显示“成功与服务器建立连接”,然后我们就可以分别在服务器和客户端向对方发送数据了。

1 TCP介绍

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

在QT中的网络编程的过程如下:服务器有两个套接字,一个负责监听(QTcpServer),另一个负责通信(QTcpSocket),而客户端只有一个负责通信的套接字(QTcpSocket)。

通信过程如下图:

如何用QT库轻松实现TCP通信协议?

2 Tcp服务器实现

//监听套接字,指定父对象,让其自动回收空间 tcpServer = new QTcpServer(this); tcpServer->listen(QHostAddress::AnyIPv4, 6000);

当有新的连接建立时,在服务器界面接收区处显示客户端地址和端口,并且等待数据发送过来,接收并显示:

connect(tcpServer, &QTcpServer::newConnection,             [=](){                 //取出建立好连接的套接字                 //cout << "有新的客户端进行连接";                 tcpSocket = tcpServer->nextPendingConnection();                 //获取对方的IP和端口                 QString ip = tcpSocket->peerAddress().toString();                 quint16 port = tcpSocket->peerPort();                 QString temp = QString("[%1:%2]:成功连接").arg(ip).arg(port);                         ui->textEditRead->setText(temp);                                  connect(tcpSocket, &QTcpSocket::readyRead,                         [=](){                             //cout << "有数据从客户端发过来";                             //从通信套接字取出内容                             QByteArray array = tcpSocket->readAll();                             ui->textEditRead->append(array);                         }                         );             }             ); }

发送数据:

void ServerWidget::on_buttonSend_clicked() {     if(NULL == tcpSocket){         return;     }     //获取编辑区内容     QString str = ui->textEditWrite->toPlainText();     //给对方发送数据。使用套接字是tcpSocket     tcpSocket->write(str.toUtf8().data()); }

点击close按钮,如果tcpSocket没有分配内存,则退出,否则断开连接。

void ServerWidget::on_buttonClose_clicked() {     if(NULL == tcpSocket){         return;     }     //主动和客户端断开连接     tcpSocket->disconnectFromHost();     tcpSocket->close();     tcpSocket = NULL; }

3 TCP客户端实现

分配空间,指定父对象

tcpSocket = new QTcpSocket(this);

如果服务器发送连接成功,则客户端显示“成功与服务器建立连接”。

connect(tcpSocket, &QTcpSocket::connected,             [=](){                 ui->textEditRead->setText("成功与服务器建立连接");             }             );

客户端读取数据,并显示在接收区

connect(tcpSocket, &QTcpSocket::readyRead,             [=](){                 //获取服务器发送的内容                 QByteArray array = tcpSocket->readAll();                 ui->textEditRead->append(array);             }             );

按下connect按钮,主动与服务器建立连接

void ClientWidget::on_pushButtonConnect_clicked() {     //获取服务器ip和端口     QString ip = ui->lineEditIP->text();     quint16 port = ui->lineEditPort->text().toInt();     //主动和服务器建立连接     tcpSocket->connectToHost(QHostAddress(ip), port); }

按下send按钮,发送数据,转成utf-8格式

void ClientWidget::on_pushButtonSend_clicked() {     if(NULL == tcpSocket){         return;     }     //获取编辑区内容     QString str = ui->textEditWrite->toPlainText();     //给对方发送数据,使用套接字是tcpSocket     tcpSocket->write(str.toUtf8().data()); }

按下close关闭连接

void ClientWidget::on_pushButtonClose_clicked() {     tcpSocket->disconnectFromHost();     tcpSocket->close(); }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。

本文共计1031个文字,预计阅读时间需要5分钟。

如何用QT库轻松实现TCP通信协议?

本例展示了如何使用Qt实现简单的TCP通信。以下是大体代码框架,供大家参考:

开发环境:- 操作系统:Win7- 开发软件:Qt 5.5.0

主要功能:- 实现客户端与服务器端之间的连接- 连接成功后,进行数据交换

代码示例:cpp#include

QTcpSocket *socket=new QTcpSocket(this);

// 连接服务器socket->connectToHost(127.0.0.1, 12345);

// 连接信号与槽connect(socket, SIGNAL(connected()), this, SLOT(onConnected()));connect(socket, SIGNAL(disconnected()), this, SLOT(onDisconnected()));

// 连接成功void onConnected() { qDebug() << 连接成功;}

// 连接失败void onDisconnected() { qDebug() << 连接失败;}

注意:以上代码仅为示例,实际应用中可能需要根据具体需求进行调整。

本文实例为大家分享了QT实现简单TCP通信的具体代码,供大家参考,具体内容如下

开发环境:win7
开发软件:Qt5.5.0
下图是实现效果

首先点击客户端的connect与服务器连接,连接成功后再服务器会显示“成功连接”,然后在客户端会显示“成功与服务器建立连接”,然后我们就可以分别在服务器和客户端向对方发送数据了。

1 TCP介绍

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

在QT中的网络编程的过程如下:服务器有两个套接字,一个负责监听(QTcpServer),另一个负责通信(QTcpSocket),而客户端只有一个负责通信的套接字(QTcpSocket)。

通信过程如下图:

如何用QT库轻松实现TCP通信协议?

2 Tcp服务器实现

//监听套接字,指定父对象,让其自动回收空间 tcpServer = new QTcpServer(this); tcpServer->listen(QHostAddress::AnyIPv4, 6000);

当有新的连接建立时,在服务器界面接收区处显示客户端地址和端口,并且等待数据发送过来,接收并显示:

connect(tcpServer, &QTcpServer::newConnection,             [=](){                 //取出建立好连接的套接字                 //cout << "有新的客户端进行连接";                 tcpSocket = tcpServer->nextPendingConnection();                 //获取对方的IP和端口                 QString ip = tcpSocket->peerAddress().toString();                 quint16 port = tcpSocket->peerPort();                 QString temp = QString("[%1:%2]:成功连接").arg(ip).arg(port);                         ui->textEditRead->setText(temp);                                  connect(tcpSocket, &QTcpSocket::readyRead,                         [=](){                             //cout << "有数据从客户端发过来";                             //从通信套接字取出内容                             QByteArray array = tcpSocket->readAll();                             ui->textEditRead->append(array);                         }                         );             }             ); }

发送数据:

void ServerWidget::on_buttonSend_clicked() {     if(NULL == tcpSocket){         return;     }     //获取编辑区内容     QString str = ui->textEditWrite->toPlainText();     //给对方发送数据。使用套接字是tcpSocket     tcpSocket->write(str.toUtf8().data()); }

点击close按钮,如果tcpSocket没有分配内存,则退出,否则断开连接。

void ServerWidget::on_buttonClose_clicked() {     if(NULL == tcpSocket){         return;     }     //主动和客户端断开连接     tcpSocket->disconnectFromHost();     tcpSocket->close();     tcpSocket = NULL; }

3 TCP客户端实现

分配空间,指定父对象

tcpSocket = new QTcpSocket(this);

如果服务器发送连接成功,则客户端显示“成功与服务器建立连接”。

connect(tcpSocket, &QTcpSocket::connected,             [=](){                 ui->textEditRead->setText("成功与服务器建立连接");             }             );

客户端读取数据,并显示在接收区

connect(tcpSocket, &QTcpSocket::readyRead,             [=](){                 //获取服务器发送的内容                 QByteArray array = tcpSocket->readAll();                 ui->textEditRead->append(array);             }             );

按下connect按钮,主动与服务器建立连接

void ClientWidget::on_pushButtonConnect_clicked() {     //获取服务器ip和端口     QString ip = ui->lineEditIP->text();     quint16 port = ui->lineEditPort->text().toInt();     //主动和服务器建立连接     tcpSocket->connectToHost(QHostAddress(ip), port); }

按下send按钮,发送数据,转成utf-8格式

void ClientWidget::on_pushButtonSend_clicked() {     if(NULL == tcpSocket){         return;     }     //获取编辑区内容     QString str = ui->textEditWrite->toPlainText();     //给对方发送数据,使用套接字是tcpSocket     tcpSocket->write(str.toUtf8().data()); }

按下close关闭连接

void ClientWidget::on_pushButtonClose_clicked() {     tcpSocket->disconnectFromHost();     tcpSocket->close(); }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。