私はJavaネットワークプログラミングが初めてです。JavaでTCPクライアントのコードをグーグルで調べていました。次の例に出くわしました。
import java.lang.*;
import java.io.*;
import java.net.*;
class Client {
public static void main(String args[]) {
try {
Socket skt = new Socket("localhost", 1234);
BufferedReader in = new BufferedReader(new
InputStreamReader(skt.getInputStream()));
System.out.print("Received string: '");
while (!in.ready()) {}
System.out.println(in.readLine()); // Read one line and output it
System.out.print("'\n");
in.close();
}
catch(Exception e) {
System.out.print("Whoops! It didn't work!\n");
}
}
}
クライアントは一度に 1 行ずつデータを読み込んでいるように見えますか?. OpenFlow パケットをストリーミングしているサーバーに接続しています。OpenFlow パケットの Wireshark スクリーンショットを以下に示します。
[http://www.openflow.org/downloads/screenshot-openflow-dissector-2008-07-15-2103.jpg][1]
完全なパケットを受信したら、それをファイルにダンプし、後でたとえばwiresharkを使用して読み取ります。上記のコードでは、calss BufferedReaderを使用してデータを「行」で読み取りますか? 少なくともそれが私が理解している方法です。完全なパケットを取得してファイルに書き込む方法はありますか?