我正在为Qt中的一个学校项目制作一个简单的客户端服务器程序,但我遇到了关于如何处理到服务器的多个新连接的问题。我有一个新的连接到目前为止的代码是非常基本的:在Qt服务器应用程序中处理多个套接字的最佳方法?
void LoginServer::newConnection()
{
logSock = server->nextPendingConnection();
if(!logSock->waitForConnected(500))
{
qDebug() << "Connection failed";
}else
{
qDebug() << "It worked!";
connect(logSock, SIGNAL(readyRead()),this, SLOT(readData()));
}
}
一种方法我在互联网上被推动,如向量数据结构新的连接,并从一个容器内处理它们所看到的。我遇到的一个问题是,如果是这样,我将所有不同的套接字连接到相同的插槽以读取数据,有没有什么优雅的方法可以告诉哪个套接字发送了信号?
另一种我认为这样做的方式是,当readyRead()被发射时,我可以搜索套接字列表以查看哪些具有bytesAvailable,但这对我来说似乎是一个过于简单的解决方案。另外,如果两个套接字同时发送数据,程序可能会识别错误的套接字。
我认为的另一个选择是重写readyRead()以在信号中包含对自身的引用,然后我意识到我没有第一个想法如何做到这一点。
connect(logSock, SIGNAL(readyRead(QTcpSocket*)),this, SLOT(readData(QTcpSocket*)));
任何意见将不胜感激。
它的工作原理!谢谢! –