QT 示例:基于 TCP 的点对多 socket 通信(server, clients)
发布时间
阅读量:
阅读量
QT示例:基于TCP 点对多通讯(server,clients)
-
-
- 一、服务器server
- 二、客户端Client
- 一、服务器server
-
一、服务器server
由于客户端仅能与单一服务器建立连接,而服务器则需同时处理多个客户端的连接请求,因此如何高效管理这些并发连接成为关键问题。
-
需关注的问题:
每当有新的客户端接入时,服务器会为其分配一个SocketDescriptor,并触发newConnection()信号。然而,该信号并未将分配的SocketDescriptor传递给用户端,导致用户无法获取到对应的客户端标识。同样地,当服务器接收到新的消息时,会触发readReady()信号,但此信号同样未携带SocketDescriptor信息。这样一来,尽管服务器能够接收到消息内容,却无法确定该消息具体来自哪个客户端。 -
解决方案:
- 通过重写==[virtual protected] void QTcpServer::incomingConnection(qintptr socketDescriptor)==函数来获取SocketDescriptor。创建一个继承自QTcpSocket的自定义TcpClient类,并将获取到的SocketDescriptor作为
全部评论 (0)
还没有任何评论哟~
