我在我公司的一个客户网站上遇到了一个非常奇怪的问题。 我们的系统尝试将HTTP请求发送到站点中的某个服务器。 服务器在从DMZ内运行的计算机上运行。
客户端是Java,服务器是C#。 我的代码以下列方式发送HTTP请求:
[编辑 - 从伪代码更改为实际代码]:
Socket s = new Socket();
socket.connect([server address], timeout);
SocketOutputBuffer output = new SocketOutputBuffer (socket);
byte[] buffer = [creating the HTTP request headers]
output.write(buffer);
output.flush();
buffer = [creating the message body]
output.write(buffer);
output.flush();
调试客户端应用程序时,最后一次“output.flush()”成功完成。 在服务器端,我看到服务器端只收到HTTP头。
奇怪的是,如果我在最后一次刷新后关闭套接字,则消息正文将到达服务器。
有什么想法吗?
非常感谢。
答案 0 :(得分:0)
什么样的Java?什么平台?这之后关闭插座吗?你有没有正确关闭插座? 在许多情况下,您必须将套接字设置为以允许其完成发送缓冲数据的方式关闭(不保证刷新...)