使用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();
}
这个问题的解决方案是什么?
答案 0 :(得分:1)
这个问题的解决方案是什么?
这取决于问题所在。但我希望它是以下一个(或更多):
其中,我认为最后一次是最有可能的。
(请注意,其中许多问题更可能导致不同的故障模式;即立即失败而不是连接超时。但是,这取决于有关您环境的各种详细信息,其中一些可能对你不透明。)
其余不应该是问题,因为当我使用网络浏览器时,它与我的客户端在同一台计算机上工作。
你错了。您的网络浏览器无法成功连接到您的服务。 54321上的服务没有实现HTTP,因此您的浏览器无法从中获取页面。
TCP和UDP的防火墙规则往往特定于您尝试使用的端口。您的Web浏览器可以与服务器通信(我希望)端口80和443这一事实说明了其他端口上是否有其他东西可以连接。还有一个复杂的问题是你的网络浏览器可能被配置(或自动配置)以使用网络代理,并且可能意味着它没有与之交谈直接主持。
鉴于您所说的内容,很可能是与防火墙相关的问题。这是我最好的答案。