7

私は、常にインターネットに接続する必要がある Java プロジェクトに取り組んでいます。

プログラムで一定の時間間隔 (5 秒または 10 秒など) でインターネット接続をチェックし続け、インターネット接続が検出されない場合はすぐにメッセージを表示するようにします。

この機能を実現するために isReachable メソッドを使用しようとしました。以下はコードです -

try
{
    InetAddress add = InetAddress.getByName("www.google.com");
    if(add.isReachable(3000)) System.out.println("Yes");
    else System.out.println("No");
}
catch (UnknownHostException e) 
{
    System.out.println("unkownhostexception");
} 
catch (IOException e) 
{
    System.out.println("IoException");
}

ただし、このコードは常に「いいえ」を返します。このコードの問題は何ですか?

ありがとう

4

2 に答える 2

20

インターネットを頻繁に使用する必要がある場合は、Raffaele の提案に同意します。試してみて、失敗したときに例外を処理する準備をしてください。

なんらかの理由でインターネットの可用性を監視する必要がある場合は、まだ使用するつもりがなく、誰に接続するかわからない場合でも、既知の適切なサイト (google. com、amazon.com、baidu.com...)。

これは、いくつかのサイトをテストするために機能します。

public static void main(String[] args) {
    System.out.println(
        "Online: " +
        (testInet("myownsite.example.com") || testInet("google.com") || testInet("amazon.com"))
    );
}


public static boolean testInet(String site) {
    Socket sock = new Socket();
    InetSocketAddress addr = new InetSocketAddress(site,80);
    try {
        sock.connect(addr,3000);
        return true;
    } catch (IOException e) {
        return false;
    } finally {
        try {sock.close();}
        catch (IOException e) {}
    }
}
于 2013-06-09T07:55:52.303 に答える