当前有一个简单的TCP服务器,用于调用函数,并将二进制TCP有效载荷作为字节数组传递给每个新的传入包。 正确的分析方法是什么?
您试图将其拆分为单独的字节数组进行单独处理,但数据包包含可变长度的数据类型,无法与其他数据分离。 这似乎不是我应该做的,我认为有更好的方法
readVarInt ()是分析可变长度数据类型并返回结果的函数,未解析数据类型的长度位于int []数组中。 PacketHeader是大小、id和主体字段、id和大小已解析的类。 此外,body字段包含大小和id字节之后的所有内容
int [ ] parsedprotocolversion=main.readvarint (包标题. body;
system.out.println (parsedprotocolversion [0] ' parsedprotocolversion [1];
int [ ] parsedserveraddressize=main.readvarint (包标题. body.sublist (parsedprotocolversion (1),包标题
system.out.println (parsed1(parsedserveraddressize [1] ) parsedserveraddressize[0] );
stringparsedserveraddress=string.value of (packet header.body.sublist (parsedserveraddressize [1],parsedserveradseradveraddddddd
system.out.println(parsed2);
intparsedserverport=integer.parseunsignedint ((packet header.body.sublist ) parsedserveraddressize [1] parsedprototot
system.out.println(parsed3);
int [ ] parsednextstate=main.readvarint (packet header.body.sublist (parsedserveraddressize (1) parsedprotocolverst
system.out.println(parsed4);
returnstring.format('%d%s%d%d”),parsedProtocolVersion[0],parsedServerAddress,parsedServerPort,parseded nexex