我的目標是發送一個帶有空數據字段的TCP包,以便用遠程機器測試套接字。使用Java發送一個零數據TCP/IP包
我正在使用OutputStream類的寫入方法(byte [] b)。 我嘗試:
outClient = ClientSocket.getOutputStream();
outClient.write(("").getBytes());
這樣做,包從來沒有在電線上顯示出來。如果「」被替換爲「」或任何非零的字符串,它工作正常。
我試過jpcap,它與我一起工作,但沒有達到我的目標。 我想過擴展OutputStream類,並實現我自己的OutputStream.write方法。但這超出了我的理解。如果有人已經做過這樣的事,請給我建議。
只是爲了好奇,你爲什麼要這麼做? –
我正在開發TCP代理,並希望它能夠快速檢測靜默丟棄的連接以清理新連接。所以我認爲TCP Keepalive不會達到'快速'的目的。我希望你能幫助! – JoeAngel
嗯,我有一種感覺,你會在這一個小河上。我不得不看看規範,但我敢打賭,沒有定義的行爲,這不僅意味着Java,而且即使硬件或硬件驅動程序也可能決定不發送「數據包」,因爲它在製造商中是空的自由裁量權。 –