gpt4 book ai didi

c++ - QTcpSocket - 检查是否已连接

转载 作者:行者123 更新时间:2023-11-30 01:58:51 25 4
gpt4 key购买 nike

尝试连接:

QTcpSocket *tcpClient = new QTcpSocket(this);
tcpClient->connectToHost(ip_address, portNumber);

但是 connectToHost 返回 void。
那么我应该怎么做才能检查 tcpClient 是否连接到给定的地址和端口?
我怎样才能给这个连接尝试一个允许的超时并在超时到期时检查连接状态?

最佳答案

QAbstractSocket::waitForConnected如果您能够阻止当前线程直到连接或超时,将为您提供您想要的东西。如果不是,则使用信号 QAbstractSocket::stateChanged .例如。在你的类(class)声明中有

class C
{
public slots:
void HandleStateChange(AbstractSocket::SocketState socketState );
...
};

显然,定义它,然后在 tcpClient 被声明之后

connect(tcpClient, SIGNAL(stateChanged(AbstractSocket::SocketState)), 
this, SLOT(HandleStateChange(AbstractSocket::SocketState)));

这与对 tcpClient->state() 的定时查询相结合,将准确地告诉您套接字上发生了什么,并让您对其做出响应。

关于c++ - QTcpSocket - 检查是否已连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16756522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com