Qt TCP / IP套接字连接检查

时间:2014-03-06 06:20:31

标签: qt sockets tcp

我正在编写Qt TCP / IP客户端。我想在将数据发送到服务器之前检查与服务器的连接状态。 据我所知,我可以通过以下方法来做到这一点

  • 使用bool' ConnectionState ',连接时设置此变量 在 disconnected()信号上切断并重置此变量。以前 将数据发送到服务器(client-> write())检查它的值 变量。
  • 使用此' client-> state()== QTcpSocket :: ConnectedState '方式检查连接状态。

哪个是好习惯。或任何其他方法。

提前致谢。

1 个答案:

答案 0 :(得分:8)

QTCPSocket派生自QAbstractSocket,提供state()功能。这将返回以下枚举之一: -

enum SocketState { UnconnectedState, HostLookupState, ConnectingState, ConnectedState, ..., ListeningState }

因此,假设m_pSocket是QTcpSocket,你只需要检查它是否已连接: -

bool connected = (m_pSocket->state() == QTcpSocket::ConnectedState);

您可以添加布尔值并跟踪状态,但如果发生网络错误,您需要确保它始终与实际连接状态同步。