0

我试图了解 QTcpSocket 和 QTcpServer 如何一起工作。所以我写了这个简单的例子,它在 localhost 上启动服务器和客户端套接字:

QTcpServer server;
qDebug() << "Listen: " << server.listen( QHostAddress::Any, 10590);

usleep( 500000); //1/2 sec

QTcpSocket client;
client.connectToHost( QHostAddress( "127.0.0.1"), 10590);

usleep( 5000000);
qDebug() << "Client socket available: " << client.isValid();
qDebug() << "Pending connections:" << server.hasPendingConnections();

我得到了这个输出:

Listen:  true 
Client socket available:  true 
Pending connections false 

为什么没有挂起的连接?

PS> 我不想使用 SLOT/SIGNALS 机制。

4

1 回答 1

1
int main( )
{
  QTcpServer server;
  qDebug() << "Listen: " << server.listen( QHostAddress::Any, 10590);

  usleep( 5000000);

  QTcpSocket client;
  client.connectToHost( QHostAddress( "127.0.0.1"), 10590);

  usleep( 5000000);

  qDebug() << "Client socket connected: " << ( client.state( ) == QTcpSocket::ConnectedState );
  qDebug() << "Pending connections:" << server.hasPendingConnections();
}

输出:

Listen:  true
Client socket connected:  false
Pending connections: false

这是因为QTcpServer无法回答QTcpSocket查询...两者都在同一个线程上,如果QTcpSocket正在执行,QTcpServer则处于空闲状态。

在多线程应用程序中尝试。

于 2014-07-23T12:47:57.573 回答