2013-09-24 42 views
1

目前我正在使用Socket與服務器進行通信的android移動客戶端 - 服務器應用程序。當我在家中使用我的WIFI測試應用程序時,該應用程序按預期工作。但是,只要我開始在有活動WIFI的其他地方測試它,Socket就無法建立與服務器的連接。雖然我在清單中聲明瞭Internet權限並且WIFI正在工作,但我得到「連接被拒絕」異常。這很奇怪,但是每當我用Java客戶端測試Socket時,連接在任何具有活動WIFI的地方成功建立。但是,當我嘗試在Android上做同樣的事情時,我得到「連接被拒絕」異常。在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) 

也許我應該在清單中聲明某種特殊或額外的權限?防火牆會導致這個問題嗎?任何方法來解決這個問題?

回答

1

您是否在使用模擬器? 有時候,你需要重定向端口 http://developer.android.com/guide/developing/tools/emulator.html#redirections

嘗試用你的設備來測試你的代碼(你可以使用它作爲一個「仿真器」使用Eclipse)

不要忘記的是,根據模擬器聯網如果您在本地開發服務器,則應使用IP 10.0.2.2而不是localhost/127.0.0.1。

+0

我正在真實設備上測試它。 – ring0

0

我有類似的問題。它顯示了相同的LogCat。我發現這是因爲我在兩個系統上使用了不同的IP地址。我在localhost(或127.0.0.1)上啓動了服務器,並嘗試使用客戶端(192.168.1.6)上的計算機ip地址連接到它。它將兩個IP地址都設置爲192.168.1.6。