C++ 使用QTcpSocket的多线程TCP客户端

C++ 使用QTcpSocket的多线程TCP客户端,c++,multithreading,qt,sockets,tcp,C++,Multithreading,Qt,Sockets,Tcp,我正在用Qt编写一个TCP客户端应用程序,它有许多独立的线程,每个线程都与服务器通信 我有一个简单的架构问题:我应该为每个请求创建新的QTcpSocket并每次连接,还是应该为所有请求使用单个QTcpSocket?建议采用哪种方法 就个人而言,我更喜欢创建新的套接字,这使代码更简单。但是由于某些原因,tcp连接(waitForConnected或connected信号)需要相当长的时间,这会减慢整个应用程序的速度。一个明显的例子:这取决于。我发现了问题所在。在一个服务器程序中,我使用tcpSer

我正在用Qt编写一个TCP客户端应用程序,它有许多独立的线程,每个线程都与服务器通信

我有一个简单的架构问题:我应该为每个请求创建新的QTcpSocket并每次连接,还是应该为所有请求使用单个QTcpSocket?建议采用哪种方法


就个人而言,我更喜欢创建新的套接字,这使代码更简单。但是由于某些原因,tcp连接(
waitForConnected
connected
信号)需要相当长的时间,这会减慢整个应用程序的速度。

一个明显的例子:这取决于。我发现了问题所在。在一个服务器程序中,我使用
tcpServer->listen(QHostAddress::Localhost,port)
启动TCP服务器。结果发现这个调用有问题:当我像这样使用它时,每个客户端连接都需要1-1.5秒!但是当我将其更改为
tcpServer->listen(QHostAddress::Any,port)
时,一切正常,延迟只有2-3毫秒。非常奇怪,这是Qt中的一个bug吗?更多的是奇怪的代码和奇怪的配置。你的客户端在哪里运行?当您的服务器只监听localhost时,它们是如何连接的?您需要一些复杂的网络配置来实现这一点。很有可能是您延迟的原因。这显然是一个测试配置。这两个程序都在我的开发机器上运行,所以我使用了localhost。