Mac, ip, masque et nom des cartes réseaux d'un pc (jni)

Soyez le premier à donner votre avis sur cette source.

Vue 17 200 fois - Téléchargée 1 853 fois

Description

Ce petit bout de code permet la récupération de l'adresse mac des cartes réseau d'un PC et également l'adresse IP, le masque sous réseau et le nom du device.
Pour ce qui est de l'adresse IP, du masque et du nom je sais qu'il est possible de les récupérer en java pure, mais il est plus facile de le gérer dans le code CPP afin de lier plus simplement l'adresse MAC et le reste des informations.

Le zip est composé de 2 projets :
1 - Le projet java (NetworkDevices) fait sous eclipse 3.3
2 - Le projet CPP (NetDevices) pour Linux(gcc 4.1.2) & windows (Visual Studio 6)

Note :
Pour windows il faut avoir le SDK de windows à cause de la dépendance à iphlpapi.h et iphlpapi.lib

afin de compiler correctement les codes C++ merci de bien renseigner le chemin des includes situés dans le répertoire d'installation du jdk (pour windows : également de renseigner les includes et lib du sdk de windows).

Cette source nécessite le jdk 1.5 ou supérieur (pour le main).

Le code JNI montre également comment invoquer, initialiser un objet Java depuis un code C/C++, il montre également comment retourner un tableau d'objet Java depuis un code C/C++.

Source / Exemple :


package org.cs;

import org.cs.net.NetworkDevice;
import org.cs.net.x86.NetworkDevices;

public class NetTest {

	public static void main(String[] args) {
		NetworkDevice [] devices = NetworkDevices.getNetworkDevices();
		for(NetworkDevice nd : devices) {
			System.out.println("Name    : " + nd.getName());
			System.out.println("MAC     : " + nd.getMac());
			System.out.println("IP      : " + nd.getIp());
			System.out.println("NetMask : " + nd.getSubNetMask());
			System.out.println();
			System.out.println();
		}

	}

}

Conclusion :


J'ai effectué les testes windows sous VMWare alors merci de me dire si vous avez des problèmes à l'exécution .

Le zip contient des fichiers de lancement incluant la lib au LD_PATH.
Linux : run.sh
Windows : run.bat

Codes Sources

A voir également

Ajouter un commentaire Commentaires
RaSdab Messages postés 27 Date d'inscription mercredi 6 avril 2011 Statut Membre Dernière intervention 30 septembre 2011
13 avril 2011 à 15:08
bonjour,j'ai besoin de récupérer l'adresse mac des ordinateur distant sur un réseau locale est ce que vous pouvez m'aider,je suis débutant en java,je serais reconnaissant,merci d'avance.
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
30 mars 2009 à 17:06
Salut,

la lib n'est pas dans le ldpath donc non trouvée... utilise le run.bat (si tu es sous windows) ou le run.sh (si tu es sous linux)... dedans j'y place l'option ldpath à la jvm (-Djava.library.path=dir_de_la_lib)
cs_hamines Messages postés 11 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 25 mai 2009
30 mars 2009 à 16:30
merci pour la source mais j'ai un problème
lorsque j'exécute NetTest.java un rapport d'erreurs:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no NetDevices in java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at org.cs.net.x86.NetworkDevices.<clinit>(NetworkDevices.java:15)
at org.cs.NetTest.main(NetTest.java:12)
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
13 févr. 2008 à 12:41
Salut,

Merci.

Le code C++ récupère la liste des cartes réseau dispo sur le poste local donc tu auras du mal à le reprendre pour effectuer cette récupération sur un machine distante.
cs_cheg Messages postés 1 Date d'inscription mercredi 13 février 2008 Statut Membre Dernière intervention 13 février 2008
13 févr. 2008 à 12:07
je te felicite pour ton travaille mais je veux savoir ton prog te fourni ton ip ou l'ip d'une machine distante ?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.