Don*_*rty 5 java sockets android ip-address
我正在尝试在 Android 上打开一个 Socket,但每次尝试时,无论我尝试哪种方式,我都会不断收到连接被拒绝的错误。
错误发生在我尝试创建连接的以下代码行中。
Socket socket = new Socket(getLocalIpAddressString(), 8008);
Run Code Online (Sandbox Code Playgroud)
下面是我用来获取本地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) {
Log.e("IPADDRESS", ex.toString());
}
return null;
Run Code Online (Sandbox Code Playgroud)
}
我得到的错误是:
WARN/System.err(3574): java.net.ConnectException: /192.168.2.163:8008 - Connection refused
WARN/System.err(3574): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:237)
WARN/System.err(3574): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:199)
WARN/System.err(3574): at java.net.Socket.startupSocket(Socket.java:734)
WARN/System.err(3574): at java.net.Socket.<init>(Socket.java:157)
WARN/System.err(3574): at com.networks.phone.engine.SIPEngine.rtpTest(SIPEngine.java:1444)
Run Code Online (Sandbox Code Playgroud)
我认为我的 Ipaddress 和或端口有问题?但是任何人都可以指出我可能是什么原因的正确方向吗?
从您的代码中,我假设您正在尝试打开从 Android 应用程序到同一 Android 设备的套接字连接。
由于基于 Linux 等,Android 可能有某种防火墙或连接规则,会阻止您的套接字成功连接。查看文档,可能是Android配置问题,而不是Java问题。
归档时间: |
|
查看次数: |
24222 次 |
最近记录: |