1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| public class DIVERS {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws Exception {
// Les données à connaître :
byte[] macADR_ETH = { (byte)0x18 , (byte)0xa9 , (byte)0x05 , (byte)0x2c , (byte)0x54 , (byte)0x44 }; // Ici la Mac adresse fictive 18:A9:05:2C:54:44 a été définie, remplacée la par celle de votre carte ethernet
String ethIPAdr = "192.168.1.18"; // Adresse IP de la carte Ethernet
byte[] macADR_WIF = { (byte)0x8 , (byte)0x0 , (byte)0x27 , (byte)0x0 , (byte)0x8c , (byte)0x90 }; // Ici la Mac adresse fictive 08:00:27:00:8C:90 a été définie, remplacée la par celle de votre carte Wifi
String wifIPAdr = "192.168.1.2"; // adresse IP de la carte Wifi
int port = 1234; // N° de port fictif pour l'exemple
Enumeration<NetworkInterface> enumerateur = NetworkInterface.getNetworkInterfaces(); // Enumération des cartes physique de la machine
Socket carteEthernet = null, carteWifi = null; // Préparation de deux socket, un pour la carte Ethernet, l'autre pour la carte Wifi
NetworkInterface carte;
while (enumerateur.hasMoreElements()) {
carte = enumerateur.nextElement();
if (java.util.Arrays.equals(carte.getHardwareAddress(), macADR_ETH)) { // Si vrai, il s'agit bien de la carte Ethernet
System.out.println("Carte ethernet trouvée : " + carte.getDisplayName());
Enumeration<InetAddress> enumerateurEthernet = carte.getInetAddresses(); // On énumère les adresses de la carte
InetAddress adrTmp;
while (enumerateurEthernet.hasMoreElements()) {
adrTmp = enumerateurEthernet.nextElement();
if (adrTmp.getHostAddress().equals(ethIPAdr)) { // On ne s'interresse qu'à celle que l'on attend
System.out.println("\tConfiguration : " + adrTmp.getHostAddress());
carteEthernet = new Socket(); // Création d'un socket vierge.
carteEthernet.bind(new InetSocketAddress(adrTmp, port)); // On associe le socket à la bonne carte
System.out.println("\tSocket sur carte Ethernet créé, il ne reste plus qu'à le connecter...");
// Ici, notre socket est créé sur la carte réseau locale répondant à la bonne adresse IP et à la bonne Mac adresse.
// Il ne reste plus qu'à le connecter via sa méthode connect.
// Il suffira de construire un InetSocketAddress qui pointe vers la cible (192.168.1.1) avec le bon port et l'utiliser pour la méthode connect.
}
}
}
if (java.util.Arrays.equals(carte.getHardwareAddress(), macADR_WIF)) { // Si vrai, il s'agit bien de la carte Wifi
System.out.println("Carte wifi trouvée : " + carte.getDisplayName());
Enumeration<InetAddress> enumerateurEthernet = carte.getInetAddresses();
InetAddress adrTmp;
while (enumerateurEthernet.hasMoreElements()) {
adrTmp = enumerateurEthernet.nextElement();
if (adrTmp.getHostAddress().equals(ethIPAdr)) {
System.out.println("\tConfiguration : " + adrTmp.getHostAddress());
carteWifi = new Socket();
carteWifi.bind(new InetSocketAddress(adrTmp, port));
System.out.println("\t Socket sur carte Wifi créé, il ne reste plus qu'à le connecter...");
}
}
}
}
if (carteEthernet != null) System.out.println("Carte Ethernet trouvée, socket créé");
if (carteWifi != null) System.out.println("Carte Wifi trouvée, socket créé");
}
} |