无法使QTcpSocket / QTcpServer协同工作

时间:2014-07-23 12:21:38

标签: c++ qt4.8 qtcpsocket qtcpserver

我正在尝试了解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&GT;我不想使用SLOT / SIGNALS机制。

1 个答案:

答案 0 :(得分: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处于空闲状态。

在多线程应用中尝试。