簡體   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