我有一个基本的Netty服务器(来自教程)(http://netty.io/wiki/user-guide-for-4.x.html),它接收来自客户端的请求,但我如何将字符串发送到客户端?
例如,在正常的Minecraft服务器上,您指定" MOTD"在配置文件中,当客户端从服务器列表中ping它时,它将显示该字符串。我需要做同样的事情,但是从我的服务器代码。
答案 0 :(得分:2)
如果您希望将MoTD发送到客户端,您必须弄清楚在协议和数据方面发送的内容。
例如,在最基本的形式中,发送的数据可以是1个字节用于操作(显示motd),然后是可变长度的字符串。
如果我必须了解如何发送此信息,我会查看open-source bukkit repositories或Minecraft Decompiled Code Repository,了解如何自行完成此操作。
更新: 在查看代码时,似乎Minecraft也使用了Netty,因此在理解它方面起到了优势。不幸的是,代码是非正式反编译的,因此被混淆了。
更新2: 我相信你应该检查的课程是
net.minecraft.server.PacketStatusOutServerInfo
,发送的数据似乎是ServerPing类生成的JSON。
您还可以查看Minecraft Protocol(具体为Ping); modders可以找到协议和解释的地方。加密。
答案 1 :(得分:1)
此处理程序显示发送MOTD:
恰好是MOTD处理在第69行:https://github.com/Bukkit/mc-dev/blob/c1627dc9cc7505581993eb0fa15597cb36e94244/net/minecraft/server/LegacyPingHandler.java/#L69
当通道收到ping数据包时,它会将响应编码为ByteBuf并将其写回通道。
请注意,文件上存在一些反编译错误 - 忽略它们并修复它。