如果我们只知道IP,如何知道服务器是否在线
How to know if a server is online or not, if we only know the IP?
怎么可能呢,服务器不是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,但游戏服务器软件本身未运行,则可能会获得"误报"。
所以我认为你最好的选择是找出游戏服务器本身侦听的端口,并尝试在这些端口上进行连接。
相关文章:
- 努力将整数转换为链表。不知道我在这里做错了什么
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- "unknown ca"自生成的 CA、证书和客户端/服务器
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 当我编译webrtc服务器时,Windows上只支持clang-cl
- 叮当不知道PTRDIFF_MAX?
- 有没有办法知道Tracer是否成功地完全连接到了jaegerclientcpp中的jaeger后端服务器
- 有没有人知道如何终止ESP8266 http Web服务器/接入点
- 如何知道何时没有进一步的响应在使用SSL_READ()时从服务器接收
- web服务器如何知道何时完全接收到HTTP请求
- 我怎么知道我的服务器是否在一段时间内没有连接
- 如果我们只知道IP,如何知道服务器是否在线
- 如何知道 IP 地址是否在 Linux 服务器上是本地的
- 具有进程间通信功能的服务器-客户端日志记录体系结构.你知道解决方案吗?
- 在C#中为windows API编写COM服务器,从何开始
- 服务器套接字如何知道网线在Windows中拔出使用c++
- 如何从客户端访问服务器主机名中知道客户端访问服务器FQDN
- Boost ASIO:服务器如何知道客户端是否仍在连接
- 当我使用协议缓冲区时,我如何知道服务器端的ByteSize()