TCP パケットを受信し、その内容を読み取る Java サーバー ソケット アプリケーションを作成したいと考えています。パケットの内容に基づいて、いくつかのアクションを実行します。コンテンツを読み取って文字列 System.out.println(sb.toString()); を出力するところまでたどり着きました。しかし、(a) すべてのコンテンツが印刷されるわけではなく、(b) ネットワークの順序でコンテンツを処理する方法がわかりません。例は、HTTP パケットを受信し、ヘッダーから「Content-Length」または「User-Agent」を報告することです。任意の例をいただければ幸いです。
public static void main(String[ ] args){
PrintWriter out = null;
BufferedReader in = null;
int bufferSize = 0;
try{
String message = args[0];
int count = 0;
ServerSocket connectionSocket = null;
try {
connectionSocket = new ServerSocket(4444);
System.out.println("Server started");
} catch (IOException e) {
System.err.println("Could not listen on port: 4444.");
System.exit(1);
}
Socket clientSocket = null;
try {
while(true){
count++;
clientSocket = connectionSocket.accept();
System.out.println("TCP packet received… " + count);
InputStream is = clientSocket.getInputStream();
out = new PrintWriter(clientSocket.getOutputStream());
in = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = in.readLine()) != null) {
sb.append(line + "\n");
}
System.out.println(sb.toString());
clientSocket.close();
}
} catch (IOException e) {
System.err.println("Accept failed.");
System.exit(1);
}
}
catch(Exception e){
e.printStackTrace();
}
}