四十七、Qt网络(七)TCP(一)
TCP即Transmission Control Protocol,传输控制协议。与UDP不同,它是面向连接和数据流的可靠传输协议。也就是说,它能使一台计算机上的数据无差错的发往网络上的其他计算机,所以当要传输大量数据时,我们选用TCP协议。
TCP协议的程序使用的是客户端/服务器模式,在Qt中提供了QTcpSocket类来编写客户端程序,使用QTcpServer类编写服务器端程序。我们在服务器端进行端口的监听,一旦发现客户端的连接请求,就会发出newConnection()信号,我们可以关联这个信号到我们自己的槽函数,进行数据的发送。而在客户端,一旦有数据到来就会发出readyRead()信号,我们可以关联此信号,进行数据的接收。其实,在程序中最难理解的地方就是程序的发送和接收了,为了让大家更好的理解,我们在这一节只是讲述一个传输简单的字符串的例子,在下一节再进行扩展,实现任意文件的传输。
tcpClientprivate:
QTcpSocket *tcpSocket;
QString message; //存放从服务器接收到的字符串
quint16 blockSize; //存放文件的大小信息
QString str;
private slots:
void newConnect(); //连接服务器
void readMessage(); //接收数
void displayError(QAbstractSocket::SocketError); //显示错误
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
tcpSocket = new QTcpSocket(this);
connect(tcpSocket,SIGNAL(readyRead()),this,SLOT(readMessage()));
connect(tcpSocket,SIGNAL(error(QAbstractSocket::SocketError)),this

本文介绍了TCP协议的基本特性,强调其面向连接和可靠传输的特点,适合大数据传输。在Qt环境中,利用QTcpSocket作为客户端,QTcpServer作为服务器端进行通信。服务器端通过监听端口,接收到连接请求时触发newConnection()信号,客户端则在数据到达时触发readyRead()信号,用于接收数据。文章以传输简单字符串为例,帮助读者理解TCP在Qt中的应用,后续章节将深入探讨文件传输。
最低0.47元/天 解锁文章
1万+





