Java维护持久的TCP连接
我正在尝试使用TCP将多个数据从服务器发送到客户端。我只想为整个会话创建一个TCP连接。我该怎么做呢 我尝试了一个具有以下流的代码,但程序在收到第一个响应后停止 客户端Java维护持久的TCP连接,java,sockets,tcp,persistent,Java,Sockets,Tcp,Persistent,我正在尝试使用TCP将多个数据从服务器发送到客户端。我只想为整个会话创建一个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 req
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
会话处于活动状态时,我不会关闭两侧的套接字和流
更新
以下是我的代码片段:
客户
服务器
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
我认为问题在于你的客户代码。你写道:
String requestLine = "This is request message 1" + CRLF;
.....
outToServer.writeBytes(requestLine + CRLF);
您将CRLF添加到requestLine,并在将其发送到服务器时再次添加它。确保每个要发送的邮件只添加一次CRLF,它将按照您的要求运行。发布相关的代码片段——很难对不可见的代码提出建议。:)您编写了两个方面,当然可以将调试器附加到服务器,并观察第二个请求到达时发生的情况?已经发布了必要的代码片段和调试器输出:)非常感谢!这确实是我的代码的问题所在-我花了几个小时的调试才找到答案!
This is request message 1
null
java.net.SocketException: Broken pipe
String requestLine = "This is request message 1" + CRLF;
.....
outToServer.writeBytes(requestLine + CRLF);