Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: JmJ 10. 11. 2016, 09:03:48

Název: Java, Win - zasekávání enumerace síťových rozhraní
Přispěvatel: JmJ 10. 11. 2016, 09:03:48
Zdravim,

mam jednoduchy program v Jave, ktery ma vypsat sitova rozhrani v systemu. Pokud jsou v systemu "obycejne" sitovky, tak vse funguje ok. Pokud je k PC pripojen mobilni telefon pres USB, ktery vytvori v systemu virtualni sitovku, tak enumerace trva i 2 minuty. C# aplikace funguje ok.  Zkouseno na vice PC s ruznymi verzemi win, JDK 1.8.

K zaseknuti dojde primo na NetworkInterface.getNetworkInterfaces()

Kód: [Vybrat]
import java.io.*;
import java.net.*;
import java.util.*;
import static java.lang.System.out;

public class TestNetwork {
 
     
  public static void main(String[] args) throws SocketException {
     Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces();
        for (NetworkInterface netint : Collections.list(nets))
            displayInterfaceInformation(netint);
  }

  static void displayInterfaceInformation(NetworkInterface netint) throws SocketException {
        out.printf("Display name: %s\n", netint.getDisplayName());
        out.printf("Name: %s\n", netint.getName());
        Enumeration<InetAddress> inetAddresses = netint.getInetAddresses();
       
        for (InetAddress inetAddress : Collections.list(inetAddresses)) {
            out.printf("InetAddress: %s\n", inetAddress);
        }
       
        out.printf("Up? %s\n", netint.isUp());
        out.printf("Loopback? %s\n", netint.isLoopback());
        out.printf("PointToPoint? %s\n", netint.isPointToPoint());
        out.printf("Supports multicast? %s\n", netint.supportsMulticast());
        out.printf("Virtual? %s\n", netint.isVirtual());
        out.printf("Hardware address: %s\n",
                  Arrays.toString(netint.getHardwareAddress()));
        out.printf("MTU: %s\n", netint.getMTU());
        out.printf("\n");
     }
}

Nenapada vas prosim kde muze byt problem?
Název: Re:Java, Win - zasekávání enumerace síťových rozhraní
Přispěvatel: soyo 11. 11. 2016, 07:24:27
Zdar,
no ak o tom mlci aj google, tak by som skusil profilerom pozriet, kde to tolko trva, pripadne by som postupne zapoznamkoval jednotlive sysouty. Tipoval by som, ze java sa niekde resolvnut ip adresu.
Název: Re:Java, Win - zasekávání enumerace síťových rozhraní
Přispěvatel: Filip Jirsák 11. 11. 2016, 08:38:01
Podívejte se do zdrojáků JDK, jak je NetworkInterface.getNetworkInterfaces() implementováno.
Název: Re:Java, Win - zasekávání enumerace síťových rozhraní
Přispěvatel: podlesh 11. 11. 2016, 13:13:58
Tipnul bych si na DNS resolver. Ale ověřit se to musí trasování (stačí i
Kód: [Vybrat]
strace).
Název: Re:Java, Win - zasekávání enumerace síťových rozhraní
Přispěvatel: JmJ 12. 11. 2016, 18:11:56
Diky za napady. Uvidime, jestli se prijde na to cim to bylo ;-)
Název: Re:Java, Win - zasekávání enumerace síťových rozhraní
Přispěvatel: Radovan. 13. 11. 2016, 10:04:04
Kde je ta lopata Javaman, když ho někdo potřebuje?