[英]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.