android - Android 客户端拒绝连接

标签 android sockets client

目前我正在开发使用 Socket 与服务器通信的 android 移动客户端-服务器应用程序。当我在家里使用我的 WIFI 测试它时,该应用程序按预期工作。但是一旦我开始在其他有 Activity WIFI 的地方测试它,Socket 就无法与服务器建立连接。尽管我在 list 中声明了 Internet 权限并且 WIFI 正在工作,但我还是收到“连接被拒绝”异常。很奇怪,但每当我用 Java 客户端测试 Socket 时,连接都会在任何有 Activity WIFI 的地方成功建立。但是,当我尝试在 Android 上执行相同操作时,出现“连接被拒绝”异常。

错误发生在这里:

socket = new Socket(SERVERIP, SERVERPORT);

我在 list 中拥有以下权限:

<uses-permission android:name="android.permission.INTERNET" />

LogCat:

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)

也许我应该设置 list 中声明的​​某种特殊或额外权限?防火墙会导致这个问题吗?有什么方法可以解决这个问题?

最佳答案

你在使用模拟器吗? 有时,您需要重定向端口 http://developer.android.com/guide/developing/tools/emulator.html#redirections

尝试用您的设备测试您的代码(您可以将它用作 Eclipse 的“模拟器”)

不要忘记,如果您在本地开发服务器,则应使用 Emulator Networking IP 10.0.2.2 而不是 localhost/127.0.0.1。

关于android - Android 客户端拒绝连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18979546/

相关文章:

Android if else 语句在 onItemClickListener 中不起作用

c - 如何将 long long int 的数字放入 long long int 数组

mysql - 过去 6 周内没有创建发票的客户,MySQL

android - 使用 aSmack 库的 XMPP 出现错误?

android - 如何使用 Json 字符串?

android - 在 Android 上选择/单击图像的正确解决方案

android - 我如何从 timePickerDialog 中保存 hourOfDay 和分钟以将其与其他变量进行比较?

java - 在生产中使用公共(public)池的技巧

python-3.x - Python SSL/TLS - 在 Python 3.8 上没有共享密码,但在 Python 3.6 上工作

java - ActiveSync 客户端 Java 实现