QT tcp server 多线程

需求 qt 在 tcp 编程时,希望 server 多线程来处理多个客户端的连接。 解决 多线程来处理连接的时候,还是 override incomingConnection 比较方便。主要是两个方面的工作: 创建新的 TcpSocket 方便处理数据 每个线程用来维护多个客户端 参考 QT的TCP连接多线程实现 QT编写TCP/UDP调试助手之多线程TCP服务器 Qt多线程 TCP 服务端 QT学习:QTcpServer多线程实现 QTcpServer多线程实现 iap_download

2023-06-26 · 1 min · 25 words · RamLife

QT tcp server 多连接

需求 qt 在 tcp 编程时,希望 server 是多连接的,可以同时连接多个 client 解决 服务器接到新客户端连接后,会分配一个 SocketDescriptor, 然后 emit newConnection(), 服务器收到新信息,会 emit readRead(). 但是上面这两个信号都不会传递 SocketDescriptor, 所以无法分辨客户端。 override incomingConnection 重写 incomingConnection 可以获取 socketDescriptor, 然后继承 QTcpSocket 新建一个 tcp 的类,来获取 socketDescriptor. 虽然比较麻烦,但是后面多线程处理会比较方便。 nextPendingConnection nextPendingConnection 可以获取新连接的客户端,但是也是得不到 SocketDescriptor, 不过可以通过 QTcpSocket 的 peerAddress() 和 peerPort() 来获取客户端的 ip 和 端口,可以作为分辨客户端的依据。 readyRead 也可以使用 QTcpSocket::readyRead 这个信号来绑定 lambda 接收并回复的表达式。 参考 QT TCP网络编程 QT 之TCP网络编程(非常值得看的一篇博客!) QT TCP服务端如何判断客户端已断开连接 qt之QAbstractSocket incomingConnection qtcpsocket 【QT实现TCP数据发送和接收】

2023-06-25 · 1 min · 64 words · RamLife