2017-08-23 90 views
-1

我的任務是實現一個應用程序,該應用程序將接受到某個端口的所有信息。它應該像Wireshark一樣工作。收聽某個端口上的所有數據

此代碼應該監聽端口46122的所有內容。 在Wireshark中,我看到一些信息來自此端口。但我的程序沒有看到任何東西。

ServerSocket serverSocket = new ServerSocket(46122); 
    Socket clientSocket = serverSocket.accept(); 
    PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); 
      BufferedReader in = new BufferedReader(
           new InputStreamReader(clientSocket.getInputStream())); 
+1

這將只記錄通過TCP連接發送的數據。它不會記錄TCP/IP標頭或任何使用不同協議發送的內容。那是你的意圖嗎? – erickson

+0

@Am_I_Helpful這就是問題所在。在沒有一個客戶端連接到此服務器之前,我不會看到任何包,我的理解是正確的嗎?但是Wireshark如何做呢? – Bulbum

+0

@erickson我在Wireshark中看到很多在這個端口上收到的數據。但我的程序並不是。如何查看數據?非常感謝 – Bulbum

回答

1

如果要使用Java記錄整個TCP數據包,則需要具有「本機」組件的第三方庫。核心Java庫不能做到這一點。圖書館的建議是無關緊要的,「pcap」和「java」可能是有用的搜索關鍵字。

+0

Upvoted,+1向我展示解決此問題的任何想法會更有用。 Stll這是使用java設計這樣的應用程序的糟糕選擇。我不建議任何人使用Java來開發這樣的工具,除非它是最後的選擇。 –

+0

可能你可以推薦任何圖書館?沒有鏈接,只有名稱 – Bulbum

+0

請解釋一下「native」組件是什麼意思? – Bulbum