Я пытаюсь отправить несколько данных с сервера на клиент с помощью 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
Я не закрывать сокеты и потоки с обеих сторон во время сеанса жив.
Update Вот мой фрагмент кода: Client
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
Вы писали обеими сторонами, вы можете прикрепить отладчик к серверу и посмотреть, что произойдет, когда поступит второй запрос? –
Выложили необходимые фрагменты кода и вывод отладчика :) – shyamsundar2007