C++ 使用QTcpSocket生成ping函数

C++ 使用QTcpSocket生成ping函数,c++,qt,network-programming,C++,Qt,Network Programming,我想用Qt做一个ping函数(不喜欢QProcess执行系统的ping方式) 这是演示代码 void SimmplePing(const QString& sAddress, int port=80) { QTcpSocket messenger; messenger.connectToHost(sAddress, port); if (!messenger.waitForConnected(3000)) { qDebug() <&l

我想用Qt做一个ping函数(不喜欢QProcess执行系统的ping方式)

这是演示代码

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);
}
void simpleping(常量QString和sAddress,int-port=80)
{
qtcsocket信使;
messenger.连接到主机(鞍座,端口);
如果(!messenger.waitForConnected(3000))
{

qDebug()这里的主要区别在于,正常使用的ping命令使用ICMP协议,该协议不使用TCP进行通信。尝试使用TCP通过WebSocket连接到主机的处理方式不同。如果您尝试连接的主机的TCP套接字未侦听指定端口,在本例中为端口80,则您将没有得到答案,这可能导致你遇到的行为。

()

是否尝试ping 127.0.0.1?
ping
使用ICMP,而您的代码假定远程主机将接受TCP连接请求。