QTcpServer在服务器端出现:远程主机关闭连接
问题描述:
我有一个QTcpServer应用程序和QTcpClient应用程序。 See my screenshot. 当与服务器从服务器断开,在服务器端进行交互后,客户端会出现事件(在客户端套接字 - 在插槽):QTcpServer在服务器端出现:远程主机关闭连接
void CMyClient::onSocketDisplayError(QAbstractSocket::SocketError socketError)
{
QString sErr = m_pClientSocket->errorString();
m_pWin->AddMessageFormClient("Was gotten some error! " + sErr);
}
错误消息:
远程主机关闭的连接。
之后出现的事件:
void CMyClient::onSocketDisconnected()
{
m_pWin->AddMessageFormClient("Client is disconnected!");
m_pWin->UpdateDisconnectUI();
}
它是在服务器端正确的行为产生onSocketDisplayError
?
断开客户端上的代码:
void MainWindow::on_pushButton_DisconnectFromServ_clicked()
{
m_pSocket->disconnectFromHost();
m_pSocket->waitForDisconnected(3000);
}
答
与QAbstractSocket
文件根据,那就是背后QTcpSocket
,因此您的客户端和服务器(重点煤矿)类:
要关闭插座,请致电
disconnectFromHost()
。QAbstractSocket
进入QAbstractSocket::ClosingState
。在所有待处理数据写入插座后,QAbstractSocket
实际上关闭了插座,输入QAbstractSocket::UnconnectedState
,并且发出disconnected()
。如果您想立即放弃连接,丢弃所有未决数据,请改为拨打abort()
。 如果远程主机关闭连接,QAbstractSocket
将发出error(QAbstractSocket::RemoteHostClosedError)
,在此期间套接字状态仍将为ConnectedState
,然后disconnected()
信号将发射。
所以我想说的是:
-
disconnectFromHost
是你应该用什么来关闭客户端或服务器 - 这对服务器发出指示,一个错误的正确行为远程主机关闭连接
好的。我希望 )))) –