相关疑难解决方法(0)

如何从代码中获取设备的IP地址?

是否可以使用某些代码获取设备的IP地址?

android ip-address

353
推荐指数
13
解决办法
39万
查看次数

如何在Android中将设备连接到WiFi时获取蜂窝网络的IP地址

有没有办法我可以同时获取Android中的WiFi和蜂窝网络的IP地址.我尝试使用很多例子,但能够获得只有WiFi网络而不是蜂窝网络的地址.我已启用WiFi和蜂窝网络设备可通过WiFi访问Internet.

这是我用来获取IP地址的代码:

    String ipAddress = null;
    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()) {
                    ipAddress = inetAddress.getHostAddress().toString();
                    Log.i("Here is the Address",ipAddress);
                }
            }
        }
    } catch (SocketException ex) {

    }
Run Code Online (Sandbox Code Playgroud)

当设备连接到WiFi时,是否有可能获得蜂窝网络的IP地址.如果是,那么这是可行的.

networking android ip-address

18
推荐指数
2
解决办法
1万
查看次数

获取我的LAN IP地址(192.168.xxxx)(IPV4)

在我的Android设备中,我试图找到它的IP地址(IPV4).
如果我执行以下代码

InetAddress inet = InetAddress.getLocalHost();
System.out.println(inet.getHostAddress()); //giving me 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

代码给了我127.0.0.1.
我想得到实际的IP 198.168.xx.xx.

(在我的电脑中,相同的代码虽然给了我实际的IP.)

java android inetaddress

15
推荐指数
1
解决办法
2万
查看次数

getHostAddress()返回一个反向的ip地址

我正在尝试使用WifiManager和WifiInfo类获取我的手机IP地址.

它返回正确的IP地址反转.

public String getWifiIpAddress() {
    WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
    WifiInfo wi = wm.getConnectionInfo();

    byte[] ipAddress = BigInteger.valueOf(wi.getIpAddress()).toByteArray();
    try {
        InetAddress myAddr = InetAddress.getByAddress(ipAddress);
        String hostAddr = myAddr.getHostAddress();
        return hostAddr;
    } catch (UnknownHostException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return "";
}
Run Code Online (Sandbox Code Playgroud)

结果:73.0.168.192

java android ipv4

8
推荐指数
1
解决办法
1951
查看次数

Android - ServerSocket权限被拒绝

我正在尝试在我的Android手机和我的Raspberry Pi之间建立TCP连接.应该很容易,事实证明不是吗?所以我开始用ServerSocket编写一个简单的服务器.它没有工作,所以我减少了代码,直到我得到这个不起作用的一块:

    try
    {
        String wifiip = wifiIpAddress(this);
        Log.v("SERVER", wifiip);

        ServerSocket serverSocket = new ServerSocket();
        serverSocket.setReuseAddress(true);
        serverSocket.bind(new InetSocketAddress(wifiip, 4117));
    }catch (Exception ex)
    {
        ex.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

(代码位于我的MainActivity中的onCreate方法,该方法由AndroidStudio创建)

我也尝试用这种方法创建ServerSocket但没有成功.

ServerSocket serverSocket = new ServerSocket(4117);
Run Code Online (Sandbox Code Playgroud)

方法wifiIpAddress取自这里:https://stackoverflow.com/a/18638588/2394967 ,工作得很好.

AndroidManifest.xml中

<manifest ...>
<uses-sdk android:targetSdkVersion="21"></uses-sdk>
<uses-permission android:name="ANDROID.PERMISSION.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
...
</manifest>
Run Code Online (Sandbox Code Playgroud)

也许有用的信息:

  • 我在ArchLinux上运行AndroidStudio
  • 我尝试使用一个新的未触动项目
  • 我尝试了不同的端口(1024以上)
  • 我在真实设备上运行应用程序(Xperia Z,Android 5.0.2)
  • 我尝试在另一个线程中运行ServerSocket

logcat的

    java.net.SocketException: socket failed: EACCES (Permission denied)
W/System.err? at libcore.io.IoBridge.socket(IoBridge.java:632)
W/System.err? at java.net.PlainSocketImpl.create(PlainSocketImpl.java:198)
W/System.err? at java.net.PlainServerSocketImpl.create(PlainServerSocketImpl.java:38)
W/System.err? at …
Run Code Online (Sandbox Code Playgroud)

java android

7
推荐指数
1
解决办法
2423
查看次数

标签 统计

android ×5

java ×3

ip-address ×2

inetaddress ×1

ipv4 ×1

networking ×1