基本上,我想检查游戏服务器是否在线/离线,但服务器是通过端口托管的,我该如何ping它来检查这个。出于测试目的,我要ping的服务器是fr7.mooshroom.net:25667
,但最终我将从在线plist导入服务器IP和端口,因此ip地址和端口可以分开
如果你能给我一步一步指导如何做到这一点,那将非常感激。
我使用Reachability
tonymillion
,因为苹果不适用于iOS 5。
答案 0 :(得分:1)
首先,它取决于您是在谈论TCP还是UDP。
如果是TCP,那么答案可能很简单:尝试在该端口打开与服务器的TCP连接。如果连接打开,请断开连接并报告成功。否则,失败。这是一种简单化的观点。如果服务器前面有负载平衡器或防火墙,TCP连接可能会打开,但后端服务器已关闭。
UDP会更难。除非向您发送某种响应,否则无法知道何时发送UDP数据,服务器获取数据。如果UDP服务器关闭并且您向端口发送了消息,则您的计算机可能会收到ICMP错误消息。这肯定会让你知道服务器已关闭。但防火墙可能会阻止此消息返回到您的设备,因此可能不可靠。
否则,您需要向服务器发送格式正确的消息以获得某种响应。这与协议有关,但最可靠。
传统的“ping”消息是ICMP echo查询和响应消息。因此,没有与ICMP相关联的“端口”。