需求
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
接收并回复的表达式。