Android客户端拒绝连接

时间:2013-09-24 10:49:27

标签: android sockets client

目前我正在开发使用Socket与服务器通信的android移动客户端 - 服务器应用程序。当我在家使用我的WIFI测试时,应用程序按预期工作。但是一旦我开始使用活动WIFI在其他地方测试它,Socket就无法与服务器建立连接。虽然我在清单中声明了Internet权限并且WIFI正在运行,但我得到“连接被拒绝”的例外情况。这很奇怪,但每当我使用Java客户端测试Socket时,就会在具有活动WIFI的任何地方成功建立连接。但是当我尝试在Android上做同样的事情时,我会得到“拒绝连接”的异常。

此处发生错误:

socket = new Socket(SERVERIP, SERVERPORT);

我在清单中拥有以下权限:

<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)

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

我遇到了类似的问题。它显示了相同的LogCat。我发现这是因为我在两个系统上使用不同的IP地址。我在localhost(或127.0.0.1)上启动了服务器,并尝试使用客户端上的计算机的IP地址(192.168.1.6)连接到它。当我将两个ip地址都设置为192.168.1.6时,它可以工作。