【发布时间】:2009-10-16 12:16:53
【问题描述】:
我根本不是 Java 程序员。实际上,我试图不惜一切代价避免它,但我必须在课堂上使用它(在学校意义上)。老师要求我们使用Socket()、BufferedReader()、PrintWriter()等各种东西,包括BufferedReader()的readLine()方法。
基本上,这就是我遇到的问题。文档明确指出 readLine 应该在输入流的末尾返回 null,但这不是正在发生的事情。
Socket link = new Socket(this.address, 80);
BufferedReader in = new BufferedReader( new InputStreamReader( link.getInputStream() ));
PrintWriter out = new PrintWriter( new PrintWriter( link.getOutputStream(), true ));
out.print("GET blah blah blah"); // http request by hand
out.flush(); // send the get please
while( (s=in.readLine()) != null ) {
// prints the html correctly, hooray!!
System.out.println(s);
}
我没有在 HTML 末尾完成,而是得到一个空行、一个 0 和 另一个空行,然后下一个 in.readLine() 永远挂起。为什么? 我的 null 呢?
我尝试了 out.close() 看看是否可能是 Yahoo!正在做一个持久的http 会话或其他东西(我认为没有标题就不会 我们愿意这样做)。
我在网上找到的所有 Java 套接字示例似乎都表明 while 循环是正确的形式。我只是不知道足够的 Java 来调试 这个。
【问题讨论】: