【发布时间】:2011-11-27 19:44:52
【问题描述】:
我想在 Java 套接字中识别 数据流结束。当我运行下面的代码时,它只是卡住并继续运行(它卡在值10)。
我也想让程序下载二进制文件,但是最后一个字节总是不同的,所以我不知道如何停止while(务实)。
String host = "example.com";
String path = "/";
Socket connection = new Socket(host, 80);
PrintWriter out = new PrintWriter(connection.getOutputStream());
out.write("GET "+ path +" HTTP/1.1\r\nHost: "+ host +"\r\n\r\n");
out.flush();
int dataBuffer;
while ((dataBuffer = connection.getInputStream().read()) != -1)
System.out.println(dataBuffer);
out.close();
感谢任何提示。
【问题讨论】:
-
也许我在这里错了,但这应该会发生,因为服务器没有关闭连接。 HTTP 1.1 默认为
keep-alive。 -
您不使用现有的 HTTP 库的任何具体原因?
-
并用请求中的连接头来修复这个问题;)
-
该程序应该是一个小代理(不仅适用于 HTTP)。
-
@user961912,常用网址可以
java.net.URL。