尝试连接:
QTcpSocket *tcpClient = new QTcpSocket(this);
tcpClient->connectToHost(ip_address, portNumber);
但是connectToHost
返回无效
那么,如果tcpClient
连接到给定的地址和端口,我应该怎么做?
如何在超时到期时为此连接尝试提供允许的超时并检查连接状态?
答案 0 :(得分:4)
QAbstractSocket::waitForConnected将准确地提供您想要的内容。如果没有,则使用信号QAbstractSocket::stateChanged。例如。在您的班级声明中有
class C
{
public slots:
void HandleStateChange(AbstractSocket::SocketState socketState );
...
};
显然,定义它,然后声明tcpClient
之后
connect(tcpClient, SIGNAL(stateChanged(AbstractSocket::SocketState)),
this, SLOT(HandleStateChange(AbstractSocket::SocketState)));
这与对tcpClient->state()
的定时查询相结合,会告诉您套接字究竟发生了什么,让您回复它。