基于QT的TCP网络通信
1. TCP服务器搭建
在工程文件字节中添加
QT += network
添加头文件
在QT中已将服务器所使用的类进行封装,添加头文件并进行声明
服务器所用类的头文件
#include<QtNetwork/QTcpServer>
网络通信所用类的头文件
#include<QtNetwork/QTcpSocket>
网络地址设置所用类的头文件
#include<QtNetwork/QHostAddress>
对象声明
服务器对象声明
QTcpServer*server;
网络通信套接字声明
QTcpSocket*socket;
服务器设置
构建server对象
server = newQTcpServer();
绑定本地IP与端口号,等待客户端链接
server->listen(QHostAddress("127.0.0.1"),8888);
newConnection()信号·用于检测是否有客户端连接,若有客户端连接,则调用自定义的con()函数
connect(server,SIGNAL(newConnection()),this,SLOT(con()));
客户端连接时,需获取网络通信套接字
构建套接字对象
socket = newQTcpSocket(this);
与客户端建立连接,并获取数据收发的套接字
socket =server->nextPendingConnection();
readyRead()信号为检测客户端是否有数据发送到服务器,若有,则立即调用自定义recvmsg()函数进行数据接受
connect(socket,SIGNAL(readyRead()),this,SLOT(recvmsg()));
2. TCP客户端搭建
在工程文件字节中添加
QT += network
头文件添加
在客户端中只需要添加网络通信所用类的头文件即可
#include<QtNetwork/QTcpSocket>
对象声明
网络通信套接字声明
QTcpSocket*socket;
客户端设置
构建套接字对象
socket = newQTcpSocket(this);
连接服务器
socket->connectToHost("127.0.0.1",8888);
connected()信号用于检测网络连接是否成功,若成功,立即调用自定义con()函数
connect(socket,SIGNAL(connected()),this,SLOT(con()));
readyRead()信号为检测服务端是否有数据发送到客户端,若有,则立即调用自定义recvmsg()函数进行数据接受
connect(socket,SIGNAL(readyRead()),this,SLOT(recvmsg()));