我的 PC 上有一个服务器程序正在运行并等待 Android 客户端。
我在我的 Android 代码中设置了这些:
mHost = "127.168.1.1"; //or getLocalIpAddress()?
mPort = 5000;
mSocket = new Socket(mHost, mPort);
并在 list 中拥有这些权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
当我尝试连接到我的 PC 时,我得到了这个 logcat 输出:
10-08 19:18:40.970: E/ex closeInputOutput(8735): java.lang.NullPointerException
10-08 19:18:40.970: E/doInBackground Exception(8735): java.net.ConnectException: failed to connect to /127.168.1.1 (port 5000): connect failed: ECONNREFUSED (Connection refused)
我有一个路由器,如何将我的 PC 连接到 127.168.1.1:5000?
编辑:
public static final String getLocalIpAddress() {
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();
String ip4 = inetAddress.getHostAddress().toString();
if (!inetAddress.isLoopbackAddress() && InetAddressUtils.isIPv4Address(ip4)) {
Log.d(TAG, "getLocalIpAddress(): " + ip4);
return ip4;
}
}
}
}
catch (Exception e) {
Log.e(TAG, "ServerUtils: getLocalIpAddress(): " + e.getMessage());
}
return null;
}
这是我的新代码,返回 192.168.1.104,但无法正常工作。使用我的 ipconfig 我得到 192.168.1.102(这是正确的。) 那么在最后的代码中出了什么问题?如何获取正确的本地IP?
最佳答案
127.168.1.1 默认在环回范围内,因此连接尝试很可能不会离开您的 Android 设备。尝试将您的服务器放在 192.168.x.x ip 上
http://www.tcpipguide.com/free/t_IPReservedPrivateandLoopbackAddresses-3.htm
关于Android连接到127.168.1.1,怎么样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12786463/