类 NetWorkReader

java.lang.Object
top.redstarmc.plugin.velocitytitle.core.util.NetWorkReader

public class NetWorkReader extends Object
本工具类由 AI 生成
跨服通信的消息读写工具类,负责字符串数组与字节数组的相互转换, 支持网络传输中的消息序列化与反序列化,并标记消息解析状态。

核心功能:

  • 将字符串数组(业务数据)序列化为字节数组(网络传输格式)
  • 将字节数组(网络接收数据)解析为字符串数组(供业务逻辑使用)
  • 通过 isCompleted() 标记消息是否解析完成,确保数据完整性

使用示例:

 // 序列化:将字符串数组转为字节数组(发送时)
 byte[][] data = NetWorkReader.buildMessage("BroadcastRaw", "player123", "Hello");

 // 反序列化:将接收的字节数组解析为字符串数组(接收时)
 NetWorkReader reader = NetWorkReader.read(receivedBytes);
 if (reader.isCompleted()) {
     String[] parts = reader.build();
     // 处理业务逻辑
 }
 
  • 方法详细资料

    • read

      public static NetWorkReader read(byte[] data) throws IOException
      将字节数组解析为 NetWorkReader 实例,提取其中的字符串数组。 解析逻辑:先读取数组长度,再依次读取每个字符串(使用 UTF-8 编码)。
      参数:
      data - 待解析的字节数组(通常来自网络传输)
      返回:
      包含解析结果的 NetWorkReader 实例
      抛出:
      IOException - 若字节数组格式错误或读取失败(如长度不匹配)
    • buildMessage

      public static byte[][] buildMessage(@NotNull @NotNull String... parts) throws IOException
      将字符串数组序列化为字节数组,用于网络传输。 序列化逻辑:先写入数组长度,再依次写入每个字符串(使用 UTF-8 编码)。
      参数:
      parts - 待序列化的字符串数组(第一个元素通常为消息类型,如 "BroadcastRaw")
      返回:
      包含序列化结果的字节数组(外层数组用于支持分片传输,当前实现为单个数组)
      抛出:
      IOException - 若字符串序列化失败(如包含不支持的字符)
    • isCompleted

      public boolean isCompleted()
      判断消息是否解析完成。
      返回:
      若解析完成(所有字符串均被正确读取)则返回 true,否则返回 false
    • build

      public String[] build()
      获取解析后的字符串数组。 需先通过 isCompleted() 确认解析完成,否则可能返回不完整数据。
      返回:
      解析后的字符串数组,若未完成解析则返回空数组