qt实现Tcp通信

举报
咚咚隆地咚 发表于 2022/09/23 14:09:03 2022/09/23
【摘要】 Tcp是较为可靠,面向流卖弄相连接的传输协议,他比较合适用在连续数据的传送,但是他的实用性并不高,因为它是一种低级的网络协议,如果需求更多,http和ftp的使用更为广泛。Tcp通信是一对一的通信,客户端和服务器端是一种相辅相成,互相不可或缺的关系。注意:客户端与服务器端的监听端口和监听地址必须保持一致! 否侧会出现连接不成功的问题。 客户端virtual void connectToHos...

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

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。