C#ping minecraft

所以发现这个小代码片段可以让你用PHP ping一个Minecraft服务器,但现在我想用C#做这个。

我尝试自己这样做,但由于某种原因它只是不起作用

UdpClient client = new UdpClient(); IPEndPoint ep; try { ep = new IPEndPoint(IPAddress.Parse("-snip-"), -snip-); client.Connect(ep); } catch { Console.WriteLine("Error"); Console.ReadLine(); return; } byte[] bytes = new byte[1]; bytes[0] = (byte)0xFE; client.Send(bytes, bytes.Length); IPEndPoint rep = new IPEndPoint(IPAddress.Any, 0); byte[] recv = client.Receive(ref rep); Console.WriteLine(ASCIIEncoding.ASCII.GetString(recv)); Console.ReadLine(); 

服务器似乎完全忽略了数据包。 这是我找到的代码片段:

  $fp = fsockopen($host, $port, $errno, $errstr, $timeout); if (!$fp) return false; //Send 0xFE: Server list ping fwrite($fp, "\xFE"); //Read as much data as we can (max packet size: 241 bytes) $d = fread($fp, 256); //Check we've got a 0xFF Disconnect if ($d[0] != "\xFF") return false; 

有人可以指出我正在犯的错误吗? 谢谢!

如此处所述

客户端在标准端口上启动与Minecraft服务器的TCP连接。 它不是进行身份validation和登录(如协议加密中所述),而是发送两个字节序列FE 01.这是一个0xFE服务器列表ping数据包。 如果缺少第二个字节(0x01),服务器将等待大约1000毫秒,然后使用1.3及更早版本中使用的服务器 – >客户端格式进行回复。

您需要发送TCP请求而您正在发送UDP数据包…