QT中udp客户端,服务器在广域网通信已实现,但现在连接多个客户端的话,只有最后一个客户端可以收到信息,之前的客户端就收不到,现在想的是采用服务器多线程,可是不知道怎么处理,求帮助~
------解决方案--------------------
用一个线程专门用来接收来自客户端的数据,保存到一个队列里面
struct ClientRequest{
QByteArray datagram;
QHostAddress sender;
quint16 senderPort;
};
ClientRequest cq;
cq.datagram.resize(udpSocket->pendingDatagramSize());
udpSocket->readDatagram(cq.datagram.data(), cq.datagram.size(),
&cq.sender, &cq.senderPort);
创建几个工作线程来处理队列中的ClientRequest, 并且把结果发送回去。