首页 文章

无法使QTcpSocket / QTcpServer协同工作

提问于
浏览
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机制 .

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 处于空闲状态 .

    在多线程应用程序中尝试它 .

相关问题