Je fais une application de serveur client pour mon J'ai créé un serveur Je peux mettre l'adresses IP code> IP code> directement similaire à est-il possible d'obtenir l'adresse de diffusion du réseau mon téléphone Android est connecté? Je ne vais jamais utiliser cette application sur mon acclamations p> Android code> Téléphone. P>
udp code> dans
python code> qui est assis et écoute les connexions. P>
192.169.0.100 code> et il envoie des données bien. Je peux également mettre dans
192.168.0.255 code> et il trouve le serveur sur
192.169.0.100 code>. P>
wifi code> réseau ou autre
wifi code> réseaux. P>
4 Réponses :
Comme l'adresse IP de la diffusion est l'adresse IP actuelle, mais la finition avec 255, vous pouvez faire quelque chose comme ceci:
public String getLocalIpAddress() { try { for (Enumeration<NetworkInterface> en = NetworkInterface .getNetworkInterfaces(); en.hasMoreElements();) { NetworkInterface intf = en.nextElement(); for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) { InetAddress inetAddress = enumIpAddr.nextElement(); if (!inetAddress.isLoopbackAddress()) { return inetAddress.getHostAddress().toString(); } } } } catch (SocketException ex) {} return null; } public static String getBroadcast() throws SocketException { System.setProperty("java.net.preferIPv4Stack", "true"); for (Enumeration<NetworkInterface> niEnum = NetworkInterface.getNetworkInterfaces(); niEnum.hasMoreElements();) { NetworkInterface ni = niEnum.nextElement(); if (!ni.isLoopback()) { for (InterfaceAddress interfaceAddress : ni.getInterfaceAddresses()) { return interfaceAddress.getBroadcast().toString().substring(1); } } } return null; }
Cela rend l'hypothèse (éventuellement injustifiée) selon laquelle le masque Netmask est 255.255.255.255. Vous devriez réellement obtenir le masque Netmask associé à l'adresse que vous avez récupérée, puis calculez bcast = ipaddress | ~ Netmask code>
Je pensais que, comment voudriez-vous mettre en œuvre une telle chose? À votre santé
"L'adresse IP de la radiodiffusion étant l'adresse IP actuelle, mais une finition avec 25" ... non. Un réseau domestique typique a une tension BAST de .255, mais ce n'est pas vrai en général.
Un sous-réseau de classe C 192.168.0.1 -> 192.168.0.126 avec masque de sous-réseau de 255.255.255.128 a une adresse de diffusion de: 192.168.0.127
Merci, je vais uplifier votre réponse lorsque vous supprimez: "L'adresse IP de la diffusion est l'adresse IP actuelle, mais une finition avec 255"
Voici une méthode qui devrait fonctionner:
Il jette une exception lorsque IPv6 a également utilisé, car il n'a aucune adresse de diffusion ni getBroadcast () renvoie NULL, Tostring () jette une exception. (Au moins sur mon émulateur Windows.) Facile à réparer, vérifiez simplement si InterfaceAddress.getBroadcast () est null ou non.
Et ... n'oubliez pas vos personnes permanentes manifestes!
Un moyen plus simple peut-être ...
Ne devrait-il pas être "255.255.255.255"?