Bonjour,
Voilà ma question est simple. Comment puis-je réaliser un broadcast en java? Je souhaiterais obtenir l'adresse ip de toutes les machines d'un réseau local (wifi), autrement dit de toutes les ip en 192.168.0.x . Merci d'avance
Bonjour,
Voilà ma question est simple. Comment puis-je réaliser un broadcast en java? Je souhaiterais obtenir l'adresse ip de toutes les machines d'un réseau local (wifi), autrement dit de toutes les ip en 192.168.0.x . Merci d'avance
Bonjour,
Cela dépend de ce que tu entend par broadcast, si j'ai bien compris tu veut juste vérifier si les machines existent, dans ce cas c'est un ping que tu veut, java a une méthode qui permet de faire ca :
Donc pour toi cela donnerais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 InetAddress inet = InetAddress.getByName(String host); inet.isReachable(int timeout);
Si en revanche tu a un service qui tourne sur toutes tes machines et que tu veut leur envoyer un message a tous simultanément, il faut passer par UDP
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 List<String> listAlive = new LinkedList<String>(); for (int i=1; i<254; i++) { InetAddress inet = InetAddress.getByName("192.168.0."+i); if (inet.isReachable(int timeout) { listAlive.add("192.168.0."+i); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 try { String data = "madata"; DatagramSocket socket = new DatagramSocket(); socket.setBroadcast(true); InetAddress broadcastAddress = getBroadcastAddress(m); DatagramPacket packet = new DatagramPacket(data.getBytes(), data.getBytes().length, broadcastAddress, 45556); socket.send(packet); // On attend la reponse du serv byte[] buf = new byte[256]; packet = new DatagramPacket(buf, buf.length); socket.receive(packet); String received = new String(packet.getData(), 0, packet.getLength()); } catch (SocketException e) { e.printStackTrace(); return false; } catch (UnknownHostException e) { e.printStackTrace(); return false; } catch (IOException e) { e.printStackTrace(); return false; }
Partager