【发布时间】:2011-12-25 15:39:59
【问题描述】:
我在公司的一个客户网站上遇到了一个非常奇怪的问题。 我们的系统尝试将 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 标头。
奇怪的是,如果我在最后一次刷新后关闭套接字,消息体就会到达服务器。
有什么想法吗?
非常感谢。
【问题讨论】:
-
很难在没有看到实际代码的情况下进行诊断。既然您知道第一次刷新有效,您是否尝试过省略它并仅在消息正文之后刷新?
-
我已经更新了代码,我会尝试省略第一次刷新。谢谢。
标签: http sockets client-server