如何实现 VB.Net 发送包含足够信息的数据包以登录 Minecraft 服务器?我有这些代码行,但我对如何从服务器请求的接收信息一无所知:/
Dim MySocket As New TcpClient(IP, Port)
Dim Socket As New Wrapped.Wrapped(MySocket.GetStream)
'Handshake Packet
Socket.writeInt("4")
Socket.writeString("localhost")
Socket.writeShort("25565")
Socket.writeInt("2")
我的最后一个想法是登录到服务器并继续使用它。我已经在这个网站上阅读了一些东西,但我仍然感到困惑:http://wiki.vg/Protocol#Handshake
感谢您的任何帮助:)
您缺少数据包标头。此外,您可能希望首先在字节数组中构建数据包,例如将MemoryStream
与BinaryWriter
一起使用。
正确的数据包如下所示:
varint length
varint packetid (0 for handshake)
varint version (4)
length prefixed string serveraddress
UInt16 port
varint nextstate
瓦林特是这样工作的 - https://developers.google.com/protocol-buffers/docs/encoding#varints因此,它们的长度取决于它们具有的值。