Java套接字客户端超时

时间:2012-04-02 00:32:03

标签: java sockets client

使用Java套接字,我制作了一个简单的服务器。这是有效的,因为只要我在地址(192.168.1.68:54321)中输入另一台计算机的Web浏览器,它就会发送数据。但是当我尝试使用Java套接字连接到服务器时,它会超时。

客户端连接代码:

public void connect() throws IOException {
        socket = new Socket(ip, port); // times out here
        socket.setKeepAlive(true);
        in = new ObjectInputStream(socket.getInputStream());
        out = new ObjectOutputStream(socket.getOutputStream());
        t = new Thread(this);
        run = true;
        t.start();
}

这个问题的解决方案是什么?

1 个答案:

答案 0 :(得分:1)

  

这个问题的解决方案是什么?

这取决于问题所在。但我希望它是以下一个(或更多):

  1. 客户端使用了错误的IP地址。
  2. 客户端使用错误的端口号。
  3. 服务器未运行。
  4. 存在物理网络连接问题或路由问题。
  5. 连接被防火墙问题,客户端,服务器或网络中的某个位置阻止。
  6. 其中,我认为最后一次是最有可能的。

    (请注意,其中许多问题更可能导致不同的故障模式;即立即失败而不是连接超时。但是,这取决于有关您环境的各种详细信息,其中一些可能对你不透明。)


      

    其余不应该是问题,因为当我使用网络浏览器时,它与我的客户端在同一台计算机上工作。

    你错了。您的网络浏览器无法成功连接到您的服务。 54321上的服务没有实现HTTP,因此您的浏览器无法从中获取页面。

    TCP和UDP的防火墙规则往往特定于您尝试使用的端口。您的Web浏览器可以与服务器通信(我希望)端口80和443这一事实说明了其他端口上是否有其他东西可以连接。还有一个复杂的问题是你的网络浏览器可能被配置(或自动配置)以使用网络代理,并且可能意味着它没有与之交谈直接主持。

    鉴于您所说的内容,很可能是与防火墙相关的问题。这是我最好的答案。