我的目标是发送一个带有空数据字段的TCP包,以便用远程机器测试套接字。使用Java发送一个零数据TCP/IP包
我正在使用OutputStream类的写入方法(byte [] b)。 我尝试:
outClient = ClientSocket.getOutputStream();
outClient.write(("").getBytes());
这样做,包从来没有在电线上显示出来。如果“”被替换为“”或任何非零的字符串,它工作正常。
我试过jpcap,它与我一起工作,但没有达到我的目标。 我想过扩展OutputStream类,并实现我自己的OutputStream.write方法。但这超出了我的理解。如果有人已经做过这样的事,请给我建议。
只是为了好奇,你为什么要这么做? –
我正在开发TCP代理,并希望它能够快速检测静默丢弃的连接以清理新连接。所以我认为TCP Keepalive不会达到'快速'的目的。我希望你能帮助! – JoeAngel
嗯,我有一种感觉,你会在这一个小河上。我不得不看看规范,但我敢打赌,没有定义的行为,这不仅意味着Java,而且即使硬件或硬件驱动程序也可能决定不发送“数据包”,因为它在制造商中是空的自由裁量权。 –