3G回線で繋がっている状態でServerSocket開いて、getInetAddress()したらアドレスが0.0.0.0となっていた。困ったのでInetAddressのgetLocalHost()でアドレス取得したら127.0.0.1となっていた。なので今度はNetworkInterfaceのgetNetworkInterfaces()経由で取得して、127.0.0.1と0.0.0.0以外のアドレスを取得するようにしたらうまくいった。以下がそのソースコード。アドレスが見つからなかったら127.0.0.1を返すようにしている。
private static String getIPAddress() throws IOException{ Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces(); while(interfaces.hasMoreElements()){ NetworkInterface network = interfaces.nextElement(); Enumeration<InetAddress> addresses = network.getInetAddresses(); while(addresses.hasMoreElements()){ String address = addresses.nextElement().getHostAddress(); //127.0.0.1と0.0.0.0以外のアドレスが見つかったらそれを返す if(!"127.0.0.1".equals(address) && !"0.0.0.0".equals(address)){ return address; } } } return "127.0.0.1"; }