2012-12-07 78 views
1

如何做到这一点,服务器不是一个HTTP服务器,它是一个ArmA游戏服务器。 我试图在下面的代码中使用CURL来实现它,但它不起作用,它总是显示为脱机。如何知道服务器是否在线,如果我们只知道IP?

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; 
    } 

回答

5

你在做什么你的代码是试图发送一个HTTP请求。它失败的原因是因为游戏服务器机器没有运行HTTP服务器。

找出机器是否在线的通常方法是通过pinging它。 Ping使用ICMP协议。下面是一个教程,解释如何从一个C++程序(它是Windows特定的)ping:http://www.developerfusion.com/article/4628/how-to-ping/

但是,服务器的管理员可能已禁用ICMP,在这种情况下,即使它是机器线上。此外,如果机器在线并响应ping命令,则可能会出现“误报”,但游戏服务器软件本身未运行。

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

+0

谢谢:)得到它的工作 – StudentX

相关问题