簡體   English   中英

C#Ping我的世界

[英]C# ping minecraft

因此找到了這個小代碼段,使您可以在PHP中對Minecraft服務器執行ping操作,但是現在我想在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連接。 它不執行身份驗證和登錄(如協議加密中所述),而是發送兩個字節的序列FE01。這是一個0xFE服務器列表ping數據包。 如果缺少第二個字節(0x01),則服務器將等待約1000ms,然后以1.3及更早版本中使用的Server-> Client格式進行回復。

您需要發送TCP請求,而發送UDP數據包...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM