一学一做演讲视频网站,做微博这样的网站,电商网站建设最好的公司,怎么制作个人网页教程文章目录概要#xff1a;本期主要讲解QT中对于TCP协议通信的实现。一、TCP协议二、Qt中TCP协议处理1.QTcpSocket2.QTcpServer三、Qt实现TCP通信1.客户端2.服务器端结尾概要#xff1a;本期主要讲解QT中对于TCP协议通信的实现。
一、TCP协议
传输控制协议#xff08;TCP本期主要讲解QT中对于TCP协议通信的实现。一、TCP协议二、Qt中TCP协议处理1.QTcpSocket2.QTcpServer三、Qt实现TCP通信1.客户端2.服务器端结尾概要本期主要讲解QT中对于TCP协议通信的实现。
一、TCP协议
传输控制协议TCPTransmission Control Protocol是一种面向连接的、可靠的、基于字节流的传输层通信协议由IETF的RFC 793 定义。 TCP建立连接前需要进行三次握手如下图所示 TCP断开连接前需要进行四次挥手如下图所示 二、Qt中TCP协议处理
Qt中提供了QTcpSocket类和QTcpServer类分别用于创建TCP套接字和TCP服务器套接字。
1.QTcpSocket
QTcpSocket类继承与QAbstractSocket主要提供了socket套接字的创建、绑定端口、连接服务器等。
2.QTcpServer
QTcpServer类继承于QSctpServer主要提供了对于TCP连接信号的响应和监听等。
三、Qt实现TCP通信
1.客户端
客户端是发送端主要实现与服务器端建立连接、发送数据。步骤如下 建立TCP套接字 -- 连接服务器 -- 发送数据 下面是客户端的源码
#ifndef TCPCLIENT_H
#define TCPCLIENT_H#include QObject
#include QTcpSocket
#include QHostAddress
#include QDebug
#include QTimerclass TCPClient : QObject
{Q_OBJECT
public:TCPClient();void InitSocket();//初始化Socket套接字void InitTimer();//初始化定时器定时发送void ConnectToServer();//连接服务器void SendData();//发送数据private:QTcpSocket *mTcpSocket;//Tcp连接套接字QHostAddress mServerAddress;//服务器IPQTimer *mTimer;//定时器对象};#endif // TCPCLIENT_H
#include tcpclient.hTCPClient::TCPClient()
{InitSocket();ConnectToServer();InitTimer();}void TCPClient::InitSocket()
{mTcpSocket new QTcpSocket;//初始化Tcp连接套接字mServerAddress.setAddress(10.0.0.177);//设置服务器地址
}void TCPClient::InitTimer()
{mTimer new QTimer;//初始化定时器对象connect(mTimer,QTimer::timeout,this,[]{SendData();});mTimer-start(1000);//每隔一秒发送一次数据
}void TCPClient::ConnectToServer()
{quint16 _port 7777;//设置服务器端口connect(mTcpSocket,QTcpSocket::connected,this,[]{qDebug() Connect To Server Successful!endl;});mTcpSocket-connectToHost(mServerAddress,_port,QIODevice::WriteOnly);//连接服务器}void TCPClient::SendData()
{QByteArray _data hello;if(-1 ! mTcpSocket-write(_data.data(),_data.length())){qDebug() TCP Send data : _dataendl;}mTcpSocket-flush();
}2.服务器端
服务器端是接收端主要实现监听连接信号建立连接和接收数据。步骤如下 建立监听套接字 -- 连接到客户端 -- 获得连接套接字 -- 接收数据 下面是服务器端源码
#ifndef TCPSEVER_H
#define TCPSEVER_H#include QObject
#include QHostAddress
#include QTcpServer
#include QTcpSocket
#include QDebugclass TCPSever : QObject
{Q_OBJECT
public:TCPSever();void InitServer();//初始化服务器
private:QTcpServer *mTcpServer;//服务器对象QTcpSocket *mTcpSocket;//客户端套接字QHostAddress mHostAddress;//本地IP地址};#endif // TCPSEVER_H#include tcpsever.hTCPSever::TCPSever()
{InitServer();
}void TCPSever::InitServer()
{mTcpServer new QTcpServer(this);//初始化监听套接字mTcpSocket new QTcpSocket;//初始化连接套接字mHostAddress.setAddress(10.0.0.177);//设置监听网卡IPquint16 _port 7777;//设置监听端口mTcpServer-listen(mHostAddress,_port);//监听指定网卡和端口qDebug()Listen Interface [mHostAddress.toString()] And Port [_port] Successful!endl;connect(mTcpServer,QTcpServer::newConnection,this,[]{mTcpSocket mTcpServer-nextPendingConnection();//获取连接套接字qDebug()Connect To Client Successful!endl;connect(mTcpSocket,QTcpSocket::readyRead,this,[]{//读取消息QByteArray _data mTcpSocket-readAll();qDebug()TCP Receive Data : QString::fromLatin1(_data)endl;});});}结尾
以上就是QT中TCP通信模块的全部内容然后上面的源码可以直接编但是记得去PRO文件中加入network模块