C#ping minecraft

use*_*973 7 php 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();
Run Code Online (Sandbox Code Playgroud)

服务器似乎完全忽略了数据包.这是我发现的代码片段:

    $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;
Run Code Online (Sandbox Code Playgroud)

任何人都可以指出我正在制造什么错误?谢谢!

fvu*_*fvu 9

如上所述这里

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

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