Java重用套接字

时间:2013-04-24 08:21:45

标签: java sockets http stream

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

当我从socket获取inputStream时,它不支持mark。那么,我可以安全地假设我将无法重复使用相同的连接来发送/接收多个请求/响应吗?

更新 我无法控制服务,我手动构建请求。

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());

1 个答案:

答案 0 :(得分:1)

HTTP 1.0标准(RFC 1945)实际上没有定义任何此类内容。这是一个后添加的功能,服务器没有义务支持它。