如果我们只知道IP,如何知道服务器是否在线

How to know if a server is online or not, if we only know the IP?

本文关键字:何知道 服务器 是否 在线 IP 我们 如果      更新时间:2023-10-16

怎么可能呢,服务器不是HTTP服务器,而是ArmA游戏服务器。我尝试在以下代码中使用 CURL 实现它,但它不起作用,它总是显示离线。

IsOnline( "xx.xxx.xx.xxx" );
    bool IsOnline( string url )
    {
        CURL *curl;
        curl = curl_easy_init();
        if(curl) 
        {
            curl_easy_setopt(curl, CURLOPT_URL, url.c_str() );

            CURLcode result = curl_easy_perform(curl);
            if ( result != CURLE_OK )
            {
               error_string = curl_easy_strerror( result );
               return false;
            }
            curl_easy_cleanup(curl);
            curl_global_cleanup();
            return true;
        }
        curl_easy_cleanup(curl);
        curl_global_cleanup();
        return false;
    }

你在代码中所做的是尝试发送HTTP请求。失败的原因是游戏服务器计算机未运行 HTTP 服务器。

确定机器是否在线的常用方法是通过 ping 它。Ping 使用 ICMP 协议。这是一个教程,解释了如何从C++程序(特定于Windows)执行ping操作: http://www.developerfusion.com/article/4628/how-to-ping/

但是,服务器的管理员可能已禁用 ICMP,在这种情况下,即使计算机处于联机状态,计算机也不会响应 ping。此外,如果机器在线并响应ping,但游戏服务器软件本身未运行,则可能会获得"误报"。

所以我认为你最好的选择是找出游戏服务器本身侦听的端口,并尝试在这些端口上进行连接。