SORU
29 Mart 2012, PERŞEMBE


Neden İnetAddress.IP adresi ping varken return false isReachable,?

    InetAddress byName = InetAddress.getByName("173.39.161.140");
    System.out.println(byName);
    System.out.println(byName.isReachable(1000));

Neden isReachable false döner? IP ping edebilirim.

CEVAP
13 NİSAN 2012, Cuma


< . em^"" . isReachable yöntem birçok durumda benim için kullanmaya layık değildir. Alt ve dış ana bilgisayarlar (yani google.com) çözümleme online yeteneğin varsa ... genel olarak *NİX makineler üzerinde çalışmak gibi görünüyor sadece test için benim alternatif kaydırarak görebilirsiniz.

Sorunu

Bu konuda sohbet eden bir çok şey var :

Bölüm 1 : tekrarlanabilir örnek sorun

Bu durumda, başarısız olduğunu unutmayın.

       //also, this fails for an invalid address, like "www.sjdosgoogle.com1234sd" 
       InetAddress[] addresses = InetAddress.getAllByName("www.google.com");
      for (InetAddress address : addresses) {
        if (address.isReachable(10000))
        {   
           System.out.println("Connected "  address);
        }
        else
        {
           System.out.println("Failed " address);
        }
      }
          //output:*Failed www.google.com/74.125.227.114*

Bölüm 2 : Hackish Geçici Bir Çözüm

Alternatif olarak, bunu yapabilirsiniz :

Process p1 = java.lang.Runtime.getRuntime().exec("ping -c 1 www.google.com");
int returnVal = p1.waitFor();
boolean reachable = (returnVal==0);

-C seçeneğipingsadece sunucu bir kez ulaşmak için terminal kullanarak alıştık ki sonsuz ping aksine) denemek için ping izin verir.

Bu döndürecektirEv sahibi ise 0 ulaşılabilir. Aksi takdirde, "" bir dönüş değeri. 2 alacak

Çok daha basit - ama tabii ki belirli bir platform. Ve bu komutu kullanarak belirli ayrıcalık yanlışlıklar olabilir ama benim bilgisayarda çalışır buluyorum.


LÜTFEN Unutmayın : 1) Bu çözüm, üretim kalitesi değil. Bir hack onun biraz. Eğer google ya da sizin internet yavaş geçici olarak, ya da belki de sana funniness senin ayrıcalıkları/sistem ayarları, eğer iade yanlış negatif (yani olabilir başarısız olsa giriş adresi ulaşılabilir). 2) isReachable başarısızlığı olağanüstü bir konudur. Yine orada birçok online kaynakları belirten yok "mükemmel" bir şekilde yapıyor bu tarihte bu yazı nedeniyle yol JVM çalışır ulaşmak için ana - sanırım bir özünde belirli bir platform görevi olan, ancak basit değil, henüz yeterince soyutlanmış tarafından JVM.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Doc Adams

    Doc Adams

    20 HAZİRAN 2007
  • Peyton

    Peyton

    28 Aralık 2008
  • bored before i even began

    bored before

    30 Mart 2009