基于QT的TCP网络通信

基于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()));

猜你喜欢

转载自blog.csdn.net/h_h_1122/article/details/78984106