qt实现Tcp通信

122 阅读2分钟

theme: awesome-green

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第29天,点击查看活动详情

前言

Tcp是较为可靠,面向流卖弄相连接的传输协议,他比较合适用在连续数据的传送,但是他的实用性并不高,因为它是一种低级的网络协议,如果需求更多,http和ftp的使用更为广泛。 Tcp通信是一对一的通信,客户端和服务器端是一种相辅相成,互相不可或缺的关系。

  注意:客户端与服务器端的监听端口和监听地址必须保持一致! 否侧会出现连接不成功的问题。

 

客户端 

virtual void connectToHost(const QString &hostName, quint16 port, OpenMode mode = ReadWrite, NetworkLayerProtocol protocol = AnyIPProtocol);

主要使用前两个参数,第一个参数是他的ip地址  第二个参数为他的端口号,通过这两个参数向服务器端发送链接。

 

服务器端

bool listen (const QHostAddress &address = QHostAddress::Any, quint16 port = 0); 这个函数的使用方法与用户端的connectToHost类似,第一个参数是他的ip地址  第二个参数为他的端口号。通过这两个参数对客户端进行监听。

共同使用:

Write(string) 当需要把数据发送出去,在服务器端接收时使用这个函数。  

读取数据:

while(tcpClient->*canReadLine*())

    {ui->plainTextEdit->appendPlainText("[in]"+tcpClient->readLine());

}

canReadLine() 用于判断当前语句是否结束,但是要值得注意的是,他所认为的结束是指有换行符,如果在发送数据的时候没有拼接上换行符他会一直处于等待的状态*

在进入循环过后,开始正式读取他的数据并在ui中显示。

总结

在实现tcp通信的过程中,一定要区分好客户端与服务器短的区别,乙方在使用过程中造成混乱。今天的更新到此结束,有不对的地方请各位多多指教。