gpt4 book ai didi

c++ - 无法使 QTcpSocket/QTcpServer 一起工作

转载 作者:行者123 更新时间:2023-11-28 06:46:26 24 4
gpt4 key购买 nike

我试图了解 QTcpSocket 和 QTcpServer 是如何协同工作的。所以我写了这个简单的例子,它在本地主机上启动服务器和客户端套接字:

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 机制。

最佳答案

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

在多线程应用中尝试。

关于c++ - 无法使 QTcpSocket/QTcpServer 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24910377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com