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
Version imprimable
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 donneraisCode:
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 UDPCode:
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:
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; }
Merci énormément :)