3

次のコードを使用して、Android フォンの IP アドレスを取得しています。

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();
                     //return inetAddress;
                 }
             }
         }
     } catch (SocketException ex) {
         Log.e("SALMAN", ex.toString());
     }

fe80::94ae:97c:2680:c6cb%rmnet0 を返します

次に、ポート 8080 でサーバーをセットアップしました。

このアドレスを使用してクライアントを接続するにはどうすればよいですか? IPv4アドレスを期待していました...接続をテストするために、クロムまたは何かを介してそれに接続できますか?

4

1 に答える 1

2

次のいずれかを使用します。

WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();

または:

try {
Socket socket = new Socket("www.stackoverflow.com", 80);
   Log.i("", socket.getLocalAddress().toString());
} catch (Exception e) {
   Log.i("", e.getMessage());
}

Chrome 経由で接続をテストすることはできませんが、HTTP プロトコルを使用している場合は接続できます。通信する別のソケットを使用して Java SE デスクトップを作成します。コードはかなり似ています。

于 2012-09-25T19:43:15.013 に答える