Få netværksinformation i Java på Windows og Linux platforme

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har brug for netværkskonfigurationsoplysninger i min ansøgning, der er mere end hvad java.net.NetworkInterface og java.net.InetAddress giver. Jeg vil gerne inkludere oplysninger som Subnet, Gateway og DNS-servere, men kode skal være bærbar til både Windows og Linux platforme.


Jeg har undersøgt det ved at gøre Runtime.getRuntime().exec("ipconfig") til Windows og Runtime.getRuntime().exec("ifconfig") til Linux og analysere resultaterne. Måske er der en bedre måde at gøre dette på eller et open source-projekt, som jeg kunne bruge.


På forhånd tak for ideer, der kan styre mig i den rigtige retning

Bedste reference


Hvis du tænker på en bedre og mere robust løsning, kan du nok bruge ideen om SNMP (Simple Network Management Protocol). Der er flere API'er til rådighed, SNMP4J er den mest berømte og åbne kilde. Da SNMP understøttes på tværs af flere operativsystemer og endda kontakter og routere, er det nok en god idé at bruge det, hvis du vil have en grundig statistik på netværksniveau. Men hvis du vil have en mere enkel løsning, så brug Sigar API, som understøtter mange OS inklusive Windows og Linux . Et problem med Sigar er, at det er licenseret under GPL, hvilket forbyder dig at implementere det i et kommercielt projekt.

Andre referencer 1


Du kunne gøre i native kode og bruge JNI.
Send derefter en .dll til Windows, og en. So (eller kildekode) til Linux,
selv om dette nok ikke er meget bedre end 'exec' -løsningen.