目前我正在开发使用 Socket 与服务器通信的 android 移动客户端-服务器应用程序。当我在家中使用 WIFI 对其进行测试时,该应用程序按预期工作。但是一旦我开始在其他有活动 WIFI 的地方测试它,Socket 就无法与服务器建立连接。尽管我在清单中声明了 Internet 权限并且 WIFI 工作正常,但我得到“连接被拒绝”异常。这很奇怪,但是每当我用 Java 客户端测试 Socket 时,连接都会在任何有活动 WIFI 的地方成功建立。但是当我尝试在 Android 上做同样的事情时,我得到了“连接被拒绝”的异常。
错误发生在这里:
socket = new Socket(SERVERIP, SERVERPORT);
我在清单中有以下权限:
<uses-permission android:name="android.permission.INTERNET" />
日志猫:
09-24 12:06:43.000: E/ClientSocket(21999): C: Connecting...
09-24 12:06:43.020: E/TCP(21999): C: Error
09-24 12:06:43.020: E/TCP(21999): java.net.ConnectException: /78.47.105.119:2012 - Connection refused
09-24 12:06:43.020: E/TCP(21999): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:207)
09-24 12:06:43.020: E/TCP(21999): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
09-24 12:06:43.020: E/TCP(21999): at java.net.Socket.startupSocket(Socket.java:724)
09-24 12:06:43.020: E/TCP(21999): at java.net.Socket.tryAllAddresses(Socket.java:150)
09-24 12:06:43.020: E/TCP(21999): at java.net.Socket.<init>(Socket.java:209)
09-24 12:06:43.020: E/TCP(21999): at java.net.Socket.<init>(Socket.java:176)
也许我应该设置清单中声明的某种特殊或额外权限?防火墙会导致这个问题吗?有什么办法可以解决这个问题?