使用wireshark获取数据包的Java套接字
我的客户机代码如下:使用wireshark获取数据包的Java套接字,java,sockets,wireshark,outputstream,Java,Sockets,Wireshark,Outputstream,我的客户机代码如下: socket = new Socket("10.105.1.20", 5678); DataOutputStrean dos = new DataOutputStream(socket.getOutputStream()); short len = 4; dos.writeByte(len); dos.writeByte(len >> 8); dos.writeShort(0x0410); dos.flush(); 发
socket = new Socket("10.105.1.20", 5678);
DataOutputStrean dos = new DataOutputStream(socket.getOutputStream());
short len = 4;
dos.writeByte(len);
dos.writeByte(len >> 8);
dos.writeShort(0x0410);
dos.flush();
发送到服务器的数据应该是4个字节。但是当我使用wireshark获取数据包时,数据是3个字节
00 04 10
我想应该是这样
04 00 04 10
第一个字节04在哪里?我的代码中是否有错误或与wireshark.THX有关,请提供帮助 Java中的短基元数据类型是16位 这显示了如何将短字符转换为字节[],这可能就是您要查找的内容
此外,这还有关于字节顺序的更多信息。没有任何东西可以保证所有四次写入都将在同一个数据包中发送。可能第一个字节是自己发送的,接下来的三个字节由Nagle算法合并。您可以使用BufferedOutputStream并在希望发送写操作时刷新它,但仍然无法保证。TCP可以按自己喜欢的方式对数据进行分段。无法解释观察结果。是的,我在上一个数据包中找到了第一个字节。在我的客户端和服务器中发送的每条消息都将分为两段(1个字节+下一个字节)