2017-08-23 5 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のこのポートで受け取った多くのデータがあります。しかし、私のプログラムdoes'nt。データの表示方法非常に感謝します – Bulbum

答えて

1

TCPパケット全体をJavaで記録する場合は、「ネイティブ」コンポーネントを持つサードパーティ製のライブラリが必要です。コアのJavaライブラリではこれを行うことはできません。図書館の推奨事項は話題にならないので、 "pcap"と "java"は参考になるかもしれません。

+0

Upvoted、+1を使用してこの問題を解決するためのアイデアを示すことは、より有益です。 Stllは、Javaを使ってそのようなアプリケーションを設計するには貧弱な選択です。私は最後の選択肢でない限り、そのようなツールを開発するためにJavaを使う人はいません。 –

+0

任意のライブラリをお勧めできますか?リンクがない場合、名前は – Bulbum

+0

となります。 – Bulbum

関連する問題