Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 重新连接QTcpServer_C++_Qt_Sockets_Qtcpsocket_Qtcpserver - Fatal编程技术网

C++ 重新连接QTcpServer

C++ 重新连接QTcpServer,c++,qt,sockets,qtcpsocket,qtcpserver,C++,Qt,Sockets,Qtcpsocket,Qtcpserver,我正在编写客户端-服务器应用程序,它使用QTcpSocket和QTcpServer。 以下是断开连接的插槽: 服务器: 客户: 当我试图模仿双方连接时可能发生的崩溃时,我会面临奇怪的行为:当我关闭服务器时,我总是可以用我的客户端重新连接到新的服务器。但是如果在连接时关闭客户端,我可以将服务器重新连接到客户端两次。再也没有了 在第三次建立连接-重新启动客户端-连接到服务器例程时,我总是失败 qtcserver::newConnection 发出信号,但 服务器->hasPendingConnect

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

服务器:

客户:

当我试图模仿双方连接时可能发生的崩溃时,我会面临奇怪的行为:当我关闭服务器时,我总是可以用我的客户端重新连接到新的服务器。但是如果在连接时关闭客户端,我可以将服务器重新连接到客户端两次。再也没有了

在第三次建立连接-重新启动客户端-连接到服务器例程时,我总是失败

qtcserver::newConnection

发出信号,但

服务器->hasPendingConnections

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

socket=server->nextPendingConnection

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

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

C.f.文件:

void qtcserver::close

关闭服务器。服务器将不再侦听传入的消息 联系

服务器上有什么?如果需要重新连接功能,为什么要执行服务器->关闭?
    void testServer::disconnected()
{
    socket = qobject_cast<QTcpSocket*>(sender());
    qDebug() << " - CLIENT DISCONNECTED";
    socket->disconnectFromHost();

    if(server->isListening())
    {
        server->close();
        qDebug() << " - SERVER CLOSED";
    }
}
void testClient::disconnected()
{
    qDebug() << " - SERVER DISCONNECTED";
    tcpSocket->disconnectFromHost();
}