私は、TCPを使用してサーバからクライアントに複数のデータを送信しようとしています。セッション全体に対して1つのTCP接続のみを作成します。これをどうやって行うのですか?Javaが永続的なTCP接続を維持しています
次のフローでコードを試しましたが、最初の応答が受信された後にプログラムが停止します。
クライアント側
1.create sockets and streams
2.send request for first data
3.wait for response from server
4.send next request <----------- server doesn't seem to handle this request
5.get next response from server
サーバー側
1.Create server socket and wait for incoming connections
2.Parse incoming request
3.Send response
4.Parse next request
5.Send next response
セッションが生きている間、私は両側のソケットとストリームを閉じないでください。ここで更新
は私のコードスニペットです: クライアント
public void processRequest() throws Exception {
Socket tempSocket = new Socket("0.0.0.0", 6782);
String requestLine = "This is request message 1" + CRLF;
DataOutputStream outToServer = new DataOutputStream(tempSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(tempSocket.getInputStream()));
outToServer.writeBytes(requestLine + CRLF);
String serverResponse = inFromServer.readLine();
System.out.println(serverResponse);
requestLine = "This is request message 2" + CRLF;
outToServer.writeBytes(requestLine + CRLF);
serverResponse = inFromServer.readLine();
System.out.println(serverResponse);
outToServer.close();
inFromServer.close();
tempSocket.close();
}
サーバー
public void processRequest() throws Exception {
createConnections();
String requestLine = inFromClient.readLine();
System.out.println(requestLine);
String responseLine = "This is the response to messsage 1";
outToClient.writeBytes(responseLine + CRLF);
requestLine = inFromClient.readLine();
System.out.println(requestLine);
responseLine = "This is the response to message 2";
outToClient.writeBytes(responseLine + CRLF);
}
出力
クライアント:
This is the response to messsage 1
This is the response to message 2
BUILD SUCCESSFUL (total time: 1 second)
サーバー:
This is request message 1
null
java.net.SocketException: Broken pipe
関連するコードスニペットを投稿する - 目に見えないコードの提案をするのは難しいです。 :) – sarnold
あなたは両側を書きました。確かに、デバッガをサーバに接続して、2番目のリクエストが到着したときに何が起こるのかを確認できますか? –
必要なコードスニペットとデバッガ出力を投稿しました:) – shyamsundar2007