繁体   English   中英

Java套接字客户端超时

[英]Java sockets Client timing out

使用Java套接字,我做了一个简单的服务器。 之所以有效,是因为每当我在另一台计算机的Web浏览器中输入地址( 192.168.1.68:54321 )时,它都会发送数据。 但是,当我尝试使用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. 客户端使用了错误的IP地址。
  2. 客户端使用了错误的端口号。
  3. 服务器未运行。
  4. 存在物理网络连接问题或路由问题。
  5. 客户端,服务器或网络中某处的防火墙问题阻止了连接。

在我看来,最后一次是最有可能的。

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


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

你误会了。 您的Web浏览器将无法成功连接到您的服务。 54321上的服务未实现HTTP,因此您的浏览器无法从中获取页面。

TCP和UDP的防火墙规则通常特定于您尝试使用的端口。 您的Web浏览器可以在(我希望)端口80和443上与服务器对话,这一事实表明,对于其他端口是否可以连接其他端口,一无所知。 而且, 还可能使您的Web浏览器配置(或自动配置)为使用Web代理,这更加复杂了,这可能意味着它根本就没有直接与该主机通信。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM