我的测试代码如下图(服务器版本1.12)
b.size()+1那里是正确的,"light_light_233".length()本身应该占两个长度,不知道是怎么了只占了一个长度,所以加一修正了
当执行到int length = readVarInt(dis);那一行时,出现了服务器在等我的数据包,我也在等服务器的数据包的尴尬情况
最后就会以服务器抛出 /127.0.0.1:49710 lost connection: Timed out 结束链接
但我在查阅了wiki.vg/Protocol之后,发现在第二个数据包发送完之后应该会给我发送一个加密请求的数据包
但服务器并没有发送给我
某群的某位dalao说让我关掉online-mode,关了还是一样的
所以发到论坛里看看有没有dalao知道这是怎么一回事qwq
求大佬解答
b.size()+1那里是正确的,"light_light_233".length()本身应该占两个长度,不知道是怎么了只占了一个长度,所以加一修正了
当执行到int length = readVarInt(dis);那一行时,出现了服务器在等我的数据包,我也在等服务器的数据包的尴尬情况
最后就会以服务器抛出 /127.0.0.1:49710 lost connection: Timed out 结束链接
但我在查阅了wiki.vg/Protocol之后,发现在第二个数据包发送完之后应该会给我发送一个加密请求的数据包
但服务器并没有发送给我
某群的某位dalao说让我关掉online-mode,关了还是一样的
所以发到论坛里看看有没有dalao知道这是怎么一回事qwq
求大佬解答
这个问题比较简单, 首先你说的没有收到加密包, 是因为盗版会直接跳过加密的部分(是的, 盗版服的通讯完全是不加密的)直接进行压缩包阈值的设置, 结束后整个握手过程结束, 协议进入 Play 状态.
如果你是弄一个能够模拟玩家登录服务端的程序, 我建议你使用国外大神的 McPrototolLib 项目(github 连接: https://github.com/Steveice10/MCProtocolLib), 据我所知以前有一个并发压测就是以它作为通讯模块来写的.
这个项目(还有同一作者的 PacketLib)设计优良, 上手简单. 楼主在使用的过程中不妨学习一下作者在编程中的技巧, 对自己也一定有所提高.
不会可以追问, 要是觉得我回答得不错, 请给我最高人气评分~
如果你是弄一个能够模拟玩家登录服务端的程序, 我建议你使用国外大神的 McPrototolLib 项目(github 连接: https://github.com/Steveice10/MCProtocolLib), 据我所知以前有一个并发压测就是以它作为通讯模块来写的.
这个项目(还有同一作者的 PacketLib)设计优良, 上手简单. 楼主在使用的过程中不妨学习一下作者在编程中的技巧, 对自己也一定有所提高.
不会可以追问, 要是觉得我回答得不错, 请给我最高人气评分~
凋灵兔子 发表于 2019-8-17 17:03
这个问题比较简单, 首先你说的没有收到加密包, 是因为盗版会直接跳过加密的部分(是的, 盗版服的通讯完全是 ...
谢谢dalao的回复
我主要是通过这个来了解一下mc服务器的连接机制的
MCProtocolLib我之前看到过,不会用2333
那么请问dalao压缩包阈值是哪个数据包来着=-=
如果我想不设置加密该怎么做
轻光233 发表于 2019-8-17 17:09
谢谢dalao的回复
我主要是通过这个来了解一下mc服务器的连接机制的
MCProtocolLib我之前看到过,不会用23 ...
不想设置加密? 这个我还真没研究过, 不过盗版是一定不加密的, 正版是一定加密的...至于正版怎么关闭加密这个我还真的....嗯...不知道
设置压缩包这个我也给忘了, 好久没搞协议了, 就是在 Handshake 子协议中的第五个包, 不加密的话是第三个.
Mcprotocollib真的很简单的, 作者在同项目中写了很多的例子, 基本上改改就能用.
最后建议楼主不要自己造 Socket, 可以借助第三方的 netty 来进行网络通信, 这样就不用自己一个字节一个字节的拆开看了
凋灵兔子 发表于 2019-8-17 17:13
不想设置加密? 这个我还真没研究过, 不过盗版是一定不加密的, 正版是一定加密的...至于正版怎么关闭加密 ...
抱歉,我打字打错了
本来想说"如果我不想设置压缩该怎么做"
McProtocolLib的jar包我还在找,等会去试一下2333
dalao知道怎么不设置加密吗qwq?