我使用以下代码获取我的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地址......我可以通过chrome或其他东西连接到它来测试连接吗?
答案 0 :(得分: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桌面进行通信。代码非常相似。