0

以下のようにAndroidマニフェストファイルでインターネットへのアクセスを許可します。 <uses-permission android:name="android.permission.INTERNET" />

次のコードは簡単なアプリケーションで記述されます。

package com.GetIP;


import java.net.InetAddress;
import android.app.Activity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class IPAddress extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button b=(Button)findViewById(R.id.btn1);

    b.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            // TODO Auto-generated method stub
             try
                {
                    InetAddress ownIP=InetAddress.getLocalHost();
                    //System.out.println("IP of my Android := "+ownIP.getHostAddress());

                    Toast.makeText(getApplicationContext(), ownIP.toString(), Toast.LENGTH_LONG).show();
                }
                catch (Exception e)
                {
                    System.out.println("Exception caught ="+e.getMessage());
                    }
        }
    });
}

}

上記のコードはlocalhost/127.0.0.1として出力されますが、デフォルトのIPアドレスですが、デバイスの動的IPアドレスをチャットアプリケーションで使用する必要があります。

4

2 に答える 2

1

このコードは、ローカル IP アドレスを提供します。

public static String getLocalIpAddressString() {
    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;
}
于 2012-08-02T13:01:45.797 に答える
0

次のコードを使用して、デバイスに接続されている IP アドレスのリストを取得できます。

public static List<String> getLocalIpAddress() {
    List<String> list = new ArrayList<String>();
    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()) {
                    list.add(inetAddress.getHostAddress().toString());
                }
            }
        }
    } catch (SocketException ex) {
        Log.e(TAG, ex.toString());
    }
    return list;
}
于 2012-08-02T13:00:19.650 に答える