首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重新连接QTcpServer

重新连接QTcpServer
EN

Stack Overflow用户
提问于 2018-03-30 05:41:30
回答 1查看 524关注 0票数 0

我正在编写客户端服务器应用程序,它使用QTcpSocket和QTcpServer。以下是断开的()插槽:

服务器:

代码语言:javascript
复制
    void testServer::disconnected()
{
    socket = qobject_cast<QTcpSocket*>(sender());
    qDebug() << " - CLIENT DISCONNECTED";
    socket->disconnectFromHost();

    if(server->isListening())
    {
        server->close();
        qDebug() << " - SERVER CLOSED";
    }
}

客户端:

代码语言:javascript
复制
void testClient::disconnected()
{
    qDebug() << " - SERVER DISCONNECTED";
    tcpSocket->disconnectFromHost();
}

当我试图模拟可能的崩溃时,我面临着奇怪的行为:当我关闭服务器时,我总是可以与我的客户重新连接到新的服务器。但是,如果在连接时关闭客户机,则只需两次就可以将服务器重新连接到客户端。再也没有了。

在第三个“建立连接-重新启动客户端-连接到服务器”的例程中,我总是失败。

QTcpServer::newConnection()

发出信号,但是

server->hasPendingConnections()

返回false,因此我无法将套接字分配给

socket = server->nextPendingConnection()

重新连接QTcpServer有什么问题?此外,服务器和客户端总是运行在const端口,e.x。1234用于服务器,4321用于客户机。这会是问题吗?

EN

回答 1

Stack Overflow用户

发布于 2018-03-30 15:23:29

server->close()结束服务器的操作。它将不再接受任何连接,任何挂起的连接也将立即关闭。在newConnection信号的发射和hasPendingConnections的使用之间有一场竞赛。后者提供了一个正确的答案--服务器在此时关闭。

C.f.文件:

void QTcpServer::close() 关闭服务器。服务器将不再侦听传入的连接。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49569011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档