java - 为什么这个程序不结束?

标签 java sockets

我期待收到 HTTP 响应,然后关闭 Socket 但它只是坐在那里,在页面返回后永远不会结束。我假设它与 Scanner 有关;为什么这个程序永远不会结束?

public class PingHost {
   public static void main(String[] args) throws Exception {
      Socket s = new Socket("www.google.com", 80);
      DataOutputStream out = new DataOutputStream(s.getOutputStream());
      out.writeBytes("GET / HTTP/1.1\n\n");
      Scanner sc = new Scanner(s.getInputStream());
      while (sc.hasNext())
         System.out.println(sc.nextLine());
      System.out.println("never gets to here");
      s.close();
   }
}

最佳答案

来自javadoc

This method may block while waiting for input to scan

关于java - 为什么这个程序不结束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18850383/

相关文章:

php - 从 PHP 脚本绑定(bind)到套接字时遇到问题

Java:使类中的包级构造函数可供外部包访问。仅允许项目内的某些类访问构造函数

java - 自定义JFrame运动 "slipping"

Java Sockets——实时传输

linux - 通过本地接口(interface)使用数据链路原始套接字发送和接收 ICMP

java - Java TCP文件传输仅在第一次尝试时完成

c - 使用winsock 2 lib在Windows中重新启动断开的TCP连接

java - 如何定义方法返回 this 的结构类型

java - 如何引用用户输入的 int?

java - 如何修复 ActiveMQ 持久订阅抛出 "durable consumer already in use"错误