0
이 아닌 255
으로 교체해야합니다.
SDK 9 이상을 타겟팅하는 경우 getBroadcast()
을 사용할 수 있습니다. 그렇지 않으면 IP 주소의 숫자를 덮어 써야합니다.
예제 코드 :이 같은
public static InetAddress getNetworkLocalBroadcastAddressdAsInetAddress() throws IOException {
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
if(VERSION.SDK_INT < 9) {
if(!intf.getInetAddresses().nextElement().isLoopbackAddress()){
byte[] quads = intf.getInetAddresses().nextElement().getAddress();
quads[0] = (byte)255;
quads[1] = (byte)255;
return InetAddress.getByAddress(quads);
}
}else{
if(!intf.isLoopback()){
List<InterfaceAddress> intfaddrs = intf.getInterfaceAddresses();
return intfaddrs.get(0).getBroadcast(); //return first IP address
}
}
}
return null;
}
는 서브넷 마스크를 모른 채 브로드 캐스트 주소를 알 수 없습니다. 귀하의 구현은 순전히 특정 서브넷 크기를 가정합니다. – Brad