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

标签 c++ qt

尝试连接:

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/

相关文章:

c++ - QTableView 带有适用于所有字段的编辑器

c++ - 如何获取可靠的 QGLWidget 快照

c++ - 在 Qt 中显示对话框的密码

c++ - 乘法类型的确定

C++ 1-100 猜谜游戏,其中计算机负责猜谜

c++ - 字节数组到 Variant

c++ - WinRT XAML - 托管和非托管 - 它是如何工作的?

c++ - 在模板实现文件中使用命名空间

windows - 有没有办法在 Windows 上使用 Qt 列出当前进程?

c++ - 对 vtable 的 undefined reference 。试图编译一个 Qt 项目