【发布时间】:2012-03-07 12:01:12
【问题描述】:
我正在尝试构建一些程序来检测某个游戏的服务器是打开还是关闭,我有服务器的 IP 和端口。
如何检测服务器是打开还是关闭?插座?平课?
如果你们能给我一个代码示例之类的,那就太好了。
非常感谢!
【问题讨论】:
-
你应该只ping服务器。但是你必须意识到你不能说服务器是打开或关闭的。假设您 ping 服务器,您的数据包可能永远不会到达服务器,因此即使服务器在线,它也不会收到请求,因此不会响应,因此您认为它处于离线状态。当您收到响应时也是如此,服务器可能在发送响应后立即崩溃,因此当您认为它在线时,它可能已离线。但在您的情况下,这些不确定性可能可以忽略不计。
-
@SimonBangTerkildsen 我不太了解网络,为什么该数据包不会到达服务器?我的程序应该一直 ping 服务器,直到它联机。应该有问题吧?
-
@idish:数据包可能无法到达服务器,因为服务器前面的防火墙可能会阻止 ping。更好的策略是尝试连接到实际服务。 (或者,如果你有一个像“nmap”这样的程序,你可以做一个 SYN-only 探测。)
-
@DavidSchwartz 我明白了,那么这意味着我所有的 ping 都不会到达服务器,对吧?另外,我如何连接到实际的服务,需要多长时间?谢谢。
标签: c# sockets networking network-programming