Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Identificare host name

  1. #1

    Identificare host name

    ciao!

    ho questo pezzo di codice con il quale vorrei identificare gli IP raggiungibili nella LAN, e in caso trovare il nome della macchina:
    codice:
    public class Main {
    
        public static void main(String[] args) {
            String baseNetwork = "192.168.1.";
            for (int i = 0; i < 256; i++) {
                String currIp = baseNetwork + String.valueOf(i);
                try {
                    InetAddress addr = InetAddress.getByName(currIp);
                    if (addr.isReachable(50)) {
                        String host = addr.getHostName();
                        System.out.println("OK: " + currIp + " - " + host);
                    }
                } catch (UnknownHostException ex) {
                    System.out.println(ex.getMessage());
                } catch (IOException ex) {
                    System.out.println(ex.getMessage());
                }
            }
        }
    }
    però ho notato che per molti IP non mi stampa il nome della macchina:
    codice:
    OK: 192.168.1.93 - 192.168.1.93
    OK: 192.168.1.94 - 192.168.1.94
    OK: 192.168.1.96 - COMMERCIALE.laltramoda.local
    OK: 192.168.1.97 - 192.168.1.97
    OK: 192.168.1.98 - LOGISTICA3.laltramoda.local
    quelli che hanno il nome sono tutte stampanti di rete.

    avete qualche idea del perchè?
    i pc non sono a dominio, ma hanno tutti lo stesso WORKGROUP (non so se può essere una info utile).

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Puoi vedere anche getCanonicalHostName(), però come dice la documentazione:

    Gets the fully qualified domain name for this IP address. Best effort method, meaning we may not be able to return the FQDN depending on the underlying system configuration.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    ciao andbin!

    si avevo già provato anche con getCanonicalHostName().
    ma il risultato è lo stesso:
    codice:
    OK: 192.168.1.93 - 192.168.1.93
    OK: 192.168.1.94 - 192.168.1.94
    OK: 192.168.1.96 - COMMERCIALE.laltramoda.local
    OK: 192.168.1.97 - 192.168.1.97
    OK: 192.168.1.98 - LOGISTICA3.laltramoda.local
    inoltre c'è altro che mi sfugge.
    ad esempio, nella lista degli IP trovate non c'è il 192.168.1.51.
    ma se eseguo un ping sulla macchina:
    codice:
    $ ping 192.168.1.51
    PING 192.168.1.51 (192.168.1.51) 56(84) bytes of data.
    64 bytes from 192.168.1.51: icmp_seq=1 ttl=128 time=1.05 ms
    64 bytes from 192.168.1.51: icmp_seq=2 ttl=128 time=1.13 ms
    ^C
    --- 192.168.1.51 ping statistics ---
    2 packets transmitted, 2 received, 0% packet loss, time 1001ms
    rtt min/avg/max/mdev = 1.054/1.096/1.139/0.053 ms
    come mai secondo te??

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da fermat Visualizza il messaggio
    si avevo già provato anche con getCanonicalHostName().
    come mai secondo te??
    Che JDK usi?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    la versione 8!

    potrebbe essere un problema di multi-OS?
    nel senso che io sto lanciando il programma da linux.
    ma sugli altri pc c'è windows!

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da fermat Visualizza il messaggio
    la versione 8!
    Perché stavo facendo prove sulla rete d'ufficio in cui sono ora: mio PC Windows (utente normale), sulla rete c'è un host (è un Linux) che pingare ... "pinga".
    Con il JDK7 addr.isReachable(50) mi dà false mentre con il JDK8 dà true.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    allora, l'ho lanciato da windows.
    adesso la scansione è più lenta (parecchio più lenta), ma il risultato è molto più preciso.
    trova tutti gli IP (anche il 192.168.1.51) e tutti i nomi dei pc.
    l'unico che non riconosce è il mio pc con linux, nel senso che lo trova attivo ma non identifica il nome.
    evidentemente linux non riesce a risolvere gli IP di windows (o magari mi manca qualche pacchetto installato).

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.