我的客户端代码如下:
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有关,为您提供帮助!
答案 0 :(得分:4)
没有任何东西可以保证所有四个写入都将在同一个数据包中发送。可能第一个字节是自己发送的,然后接下来的三个字节由Nagle算法合并。您可以使用BufferedOutputStream并在需要发送写入时将其刷新,但仍无法保证。 TCP可以按照自己喜欢的方式对数据进行细分。
答案 1 :(得分:-1)