Qt TCP/IP套接字连接检查

bep*_*ras 4 sockets qt tcp

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

  • 使用一个bool" ConnectionState ",设置在与服务器连接的这个变量和重置该变量断开()信号.现在,在将数据发送到服务器(client-> write())之前,请检查此变量的值.
  • 使用这个' client-> state()== QTcpSocket :: ConnectedState '的方式来检查连接状态.

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

提前致谢.

The*_*ght 8

QTCPSocket是从中派生出来的QAbstractSocket,它提供了一种state()功能.这将返回以下枚举之一: -

enum SocketState { UnconnectedState, HostLookupState, ConnectingState, ConnectedState, ..., ListeningState }
Run Code Online (Sandbox Code Playgroud)

因此,假设m_pSocket是a QTcpSocket,您只需执行此操作以检查它是否已连接: -

bool connected = (m_pSocket->state() == QTcpSocket::ConnectedState);
Run Code Online (Sandbox Code Playgroud)

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