Java重用套接字

Java重用套接字,java,sockets,http,stream,Java,Sockets,Http,Stream,我有一个通过HTTP到服务的套接字连接。该服务仅支持HTTP/1.0,默认情况下,HTTP/1.0在发送响应时关闭连接。此版本的协议中添加了一个参数-连接:Keep alive-使之成为可能。该标准定义服务也应将此参数附加到标头。如果响应标头不包含它,则不会发生这种情况 当我从套接字获取inputStream时,它不支持标记。那么,我可以安全地假设我将无法重用同一个连接来发送/接收多个请求/响应吗 更新 我无法控制服务,只能手动生成请求 Socket socket = new Socket("s

我有一个通过HTTP到服务的套接字连接。该服务仅支持HTTP/1.0,默认情况下,HTTP/1.0在发送响应时关闭连接。此版本的协议中添加了一个参数-连接:Keep alive-使之成为可能。该标准定义服务也应将此参数附加到标头。如果响应标头不包含它,则不会发生这种情况

当我从套接字获取inputStream时,它不支持标记。那么,我可以安全地假设我将无法重用同一个连接来发送/接收多个请求/响应吗

更新 我无法控制服务,只能手动生成请求

Socket socket = new Socket("server.com", 11111);

BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF-8"));

writer.write("POST HTTP/1.0\r\n");
writer.write("Host: " + socket.getInetAddress().getHostName() + "\r\n");
writer.write("Content-Length: " + length + "\r\n");
writer.write("Content-Type: text/xml; charset=\"utf-8\"\r\n");
writer.write("Connection: Keep-alive\r\n");
writer.write("\r\n");

writer.write(xmldata);
writer.flush();

List<String> lines = IOUtils.readLines(socket.getInputStream());
Socket-Socket=新套接字(“server.com”,11111);
BufferedWriter writer=新的BufferedWriter(新的OutputStreamWriter(socket.getOutputStream(),“UTF-8”);
writer.write(“POST HTTP/1.0\r\n”);
write(“主机:“+socket.getInetAddress().getHostName()+”\r\n”);
writer.write(“内容长度:“+Length+”\r\n”);
write(“内容类型:text/xml;字符集=\“utf-8\”\r\n”);
writer.write(“连接:保持活动\r\n”);
writer.write(“\r\n”);
write.write(xmldata);
writer.flush();
List lines=IOUtils.readLines(socket.getInputStream());

HTTP 1.0标准()实际上没有定义任何这样的东西。这是一个后期添加的功能,服务器没有义务支持它。

您能给我们看一些代码吗?您是否使用一些库来构建您的http请求?您控制什么?客户机还是服务器,还是两者都有?若您对服务器并没有影响,并且它关闭了连接,那个么您就无能为力,只需创建新的socket..@lock作为EJP写入,您就必须处理不支持此功能的服务器。但除此之外,无论如何,您应该已经发现插座在任何给定时间都是关闭的。你同意吗,伊普?@Fildor当然同意。服务器可以随时关闭连接,即使在HTTP 1.1中也是如此。如果它拒绝与
连接合作:保持活动状态,同上。