首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用QTcpSocket实现ping函数

问用QTcpSocket实现ping函数
EN

Stack Overflow用户
提问于 2020-05-29 08:56:54
回答 1查看 643关注 0票数 0

我想使用Qt创建ping函数(而且不喜欢QProcess执行系统ping方式)。

这是演示代码,

代码语言:javascript
复制
void SimmplePing(const QString& sAddress, int port=80)
{
    QTcpSocket messenger;
    messenger.connectToHost(sAddress, port);
    if (!messenger.waitForConnected(3000))
    {
        qDebug() << messenger.error();
    }
    else
    {
        qDebug() << "OK";
    }
}
void test()
{
    SimmplePing("182.34.19.222", 80);
}

我用"192.168.0.1“(我的路由器IP)和"www.baidu.com”来测试它。

但我测试它"182.34.19.222“与QAbstractSocket::SocketTimeoutError错误消息失败。

但是,在system中单击它可以正常工作。不知道为什么。

​

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-29 09:19:08

这里的主要区别是ping命令通常使用的是ICMP协议,它不使用TCP进行通信。试图使用TCP通过websockets连接到主机的方式不同。如果要连接的主机的TCP套接字不监听指定端口(在本例中为端口80 ),则不会收到答复,这会导致您遇到的行为。

(https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62082192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档