C++ 重新连接QTcpServer
我正在编写客户端-服务器应用程序,它使用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 关闭服务器。服务器将不再侦听传入的消息 联系 服务器上有什么?如果需要重新连接功能,为什么要执行服务器->关闭?C++ 重新连接QTcpServer,c++,qt,sockets,qtcpsocket,qtcpserver,C++,Qt,Sockets,Qtcpsocket,Qtcpserver,我正在编写客户端-服务器应用程序,它使用QTcpSocket和QTcpServer。 以下是断开连接的插槽: 服务器: 客户: 当我试图模仿双方连接时可能发生的崩溃时,我会面临奇怪的行为:当我关闭服务器时,我总是可以用我的客户端重新连接到新的服务器。但是如果在连接时关闭客户端,我可以将服务器重新连接到客户端两次。再也没有了 在第三次建立连接-重新启动客户端-连接到服务器例程时,我总是失败 qtcserver::newConnection 发出信号,但 服务器->hasPendingConnect
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();
}