Android Socket 连接被拒绝

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 和或端口有问题?但是任何人都可以指出我可能是什么原因的正确方向吗?

Oli*_*ier 0

从您的代码中,我假设您正在尝试打开从 Android 应用程序到同一 Android 设备的套接字连接。

由于基于 Linux 等,Android 可能有某种防火墙或连接规则,会阻止您的套接字成功连接。查看文档,可能是Android配置问题,而不是Java问题。