不能与使用C#套接字的Minecraft服务器握手?

时间:2019-06-24 15:26:49

标签: java c# sockets minecraft

我想制作一个微型我的世界客户端,该客户端加入我的世界服务器并键入我想要的任何内容。但是首先,我想获取服务器的MOTD消息。但是你不能帮我吗?

tatic void Main(string[] args)
    {
        s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        s.Connect(new IPEndPoint(IPAddress.Parse("192.168.1.29"), 25565));
        byte[] buffer = new byte[1024 * 1024];
        Task.Run(() => SendCommands());
        while (true)
        {
            s.Receive(buffer);
            Console.WriteLine(Encoding.ASCII.GetString(buffer));
            buffer = new byte[1024 * 1024];
        }
    }

    static void SendCommands()
    {
        MemoryStream ms = new MemoryStream();
        int protocolVersion = -1;
        string svaddress = "102.168.1.29";
        ushort port = 25565;
        int nextstate = 1;
        ms.Write(BitConverter.GetBytes(protocolVersion));
        ms.Write(Encoding.ASCII.GetBytes(svaddress));
        ms.Write(BitConverter.GetBytes(port));
        ms.Write(BitConverter.GetBytes(nextstate));
        s.Send(ms.ToArray());
        ms.Close();
        s.Send(new byte[0]);
    }

我认为这个问题是由于VarInt变量引起的。我使用的是普通Integer而不是VarInt,但我不知道此VarInt的工作原理。签出https://wiki.vg/Protocol#VarInt_and_VarLong

检查一下这个也是我的世界服务器协议https://wiki.vg/Protocol

我收到此错误以进行响应:

?{“ translate”:“ disconnect.genericReason”,“ with”:[“内部异常:io.netty.handler.codec.CorruptedFrameException:长度大于21位”]}

0 个答案:

没有答案