当前位置: 首页 > 知识库问答 >
问题:

有人能告诉我为什么我可以读取minecraft服务器->客户端数据,而不是反过来吗?

叶经略
2023-03-14

首先,非常感谢所有愿意帮忙的人!

如果需要,可以跳过下面的文字墙。

出身背景

我正在尝试为我自己的minecraft服务器网络制作一个代理程序,我希望使用多个服务器,让人们在单独的服务器上发挥创造力和生存(以减少服务器负载并增加我的容量)。我计划使用传输插件的东西的服务器端,但我想防止不得不安装一个clientpatch。

我发现了bungeecort,但是它没有做我需要它做的事情(即,锻造对我计划添加的调制服务器的支持。)对于mc 1.4.7(由于我计划添加的服务器,我需要使用它)。

目前,系统正在使用bungeecord代理运行。然而,md_5告诉我,我需要编写自己的代理(或mod his),以使其按我想要的方式工作。然而,我真的无法理解java(我就是不明白)。所以我决定写我自己的。

问题

经过一些研究,我发现这是可行的。最困难的部分是解析数据包。所以我四处寻找一个图书馆来帮我做这件事。我遇到了libmcnet,这似乎是我想要的,但它产生的所有数据都是乱码。

查看一些数据包转储,并使用wiki引用它。vg,我发现libmcnet给了我big endian。然而,我的代码和计算机采用了小endian。

我为此做了什么

经过一些思考和检查代码后,我认为使用libmcnet的一些定义(即包括/mcnet/Packets. h)编写自己的解析器更容易。所以我复制了包。h和read。h/read. c(两者都经过了大量修改)并开始重新编码它。我认为我做得足够好,因为我的系统可以在服务器ping期间成功解析服务器的0xff(踢)包。

新问题

下一个障碍是解密客户的数据。它似乎没有使用与服务器相同的数据标准。例如,服务器传输的数据包id是16位,而客户端的似乎是8位。

所以我想知道的是:

为什么我的代码可以很好地处理来自服务器的数据,但在客户端发送数据时却失败得很惨?我很确定libmcnet的代码(我基于它)也是错误的。

有人能帮我把这个代码写出来吗?

代码:http://pastebin.com/jg26yity(我想这样会更干净)

谢谢大家的帮助!

*如果有人要求更多,我会添加信息...

注:第一个问题在这里被问到,所以我的帖子有点乱。。。

共有1个答案

颛孙轩昂
2023-03-14

我想通了,显然我不能假设一个为解析我的世界协议而编写的库实际上有正确的代码来读取协议...我在四处挖掘,验证读取的内容与手动读取的内容...似乎字节不是我的世界的字节,我以为图书馆已经覆盖了它。

 类似资料:
  • 我正在最新版本(汇流5.5.1)中的AWS EC2实例上测试ksqldb,遇到了一个无法解决的访问问题。 我有一个安全的Kafka服务器(SASL_SSSL,SASL模式为普通),一个不安全的模式注册表(Avro序列化器的另一个问题,但暂时还可以),以及一个安全的KSQL服务器和客户机。 主题可以用来自JDBC源连接器的AVRO数据(只有值,没有键)正确填充。 我可以使用KSQL访问KSQL服务器

  • 我试图解决这个问题:第三个最大数量 但我犯了这个错误 第4行:Char 37:运行时错误:有符号整数溢出:-9223372036854775808-10不能在类型“long long”(solution.cpp)摘要中表示:UndefinedBehaviorSanitizer:undefined behavior prog_joined。cpp:13:37 这是我的代码 有人能告诉我这个错误到底意

  • 我正在努力让Google Place API出现在CardView中。 我正在查看的特定代码来自GitHub,似乎适用于其他所有人,但我不明白为什么它会给我带来错误。 这是我遇到的错误: 主要的收获是,在对android类进行膨胀时出现了一个错误。碎片应用程序。FragmentContainerView,问题在XML的第50行。 这是XML: 所以我猜FragmentContainerView有问

  • 我制作了一个FTP客户端(被动),它无法连接到服务器。我使用的FTP服务器是Filezilla;我只是用它来测试。每次我运行java程序(FTP客户端)时,Filezilla都会断开连接,并在Eclipse中出现以下错误: 这是FTP客户端: 这是我连接的程序: 还尝试编写我的lan ip而不是

  • 我一直在尝试打印和HTTP post使用Swift的一个移动应用程序,我可以用javascript和express登录它。js。但当使用Go创建的服务器时,它会给我: 下面你可以看到所有3种语言的代码: 斯威夫特: 在另一个文件的@obj func中调用: 戈朗代码: 可以阅读文章的Javascript服务器: 谢谢你抽出时间