TCP를 사용하여 서버에서 클라이언트로 여러 데이터를 보내려고합니다. 전체 세션에 대해 하나의 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)
,363,210 서버 :
This is request message 1
null
java.net.SocketException: Broken pipe
관련 코드 스 니펫 게시 - 보이지 않는 코드에 대해서는 제안하기가 어렵습니다. :) – sarnold
당신은 서버에 디버거를 부착하고 두 번째 요청이 도착했을 때 어떤 일이 일어나는지 살펴볼 수 있습니다. –
필요한 코드 스 니펫과 디버거 출력을 게시했습니다. – shyamsundar2007