Fórum Root.cz

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

Název: Java, Win - zasekávání enumerace síťových rozhraní
Přispěvatel: JmJ kdy 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()

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 kdy 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 kdy 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 kdy 11. 11. 2016, 13:13:58
Tipnul bych si na DNS resolver. Ale ověřit se to musí trasování (stačí i strace).
Název: Re:Java, Win - zasekávání enumerace síťových rozhraní
Přispěvatel: JmJ kdy 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. kdy 13. 11. 2016, 10:04:04
Kde je ta lopata Javaman, když ho někdo potřebuje?