繁体   English   中英

如果仅知道IP,如何知道服务器是否在线?

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

该怎么办呢,该服务器不是HTTP服务器,而是ArmA游戏服务器。 我尝试在下面的代码中使用CURL来实现它,但是它不起作用,它始终显示为Offline。

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作出响应,则您会收到“误报”,但游戏服务器软件本身未运行。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM