2011-11-19 37 views
2

我無法從我的android手機連接到運行netcat偵聽端口(5555)的計算機的套接字。從Android客戶端應用程序連接到服務器的插座時遇到問題

我在Android應用運行什麼:

try { 
     Socket s = new Socket("My IP number here (not local IP)", 5555); 
     DataOutputStream outToServer = new DataOutputStream(s.getOutputStream()); 
     outToServer.writeBytes("Hello!"); 
     s.close(); 
    } catch (UnknownHostException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

這是我使用的netcat行:nc -l 5555

我不知道我錯過了什麼.. 我轉發我的路由器上的端口並重新啓動路由器。在我的android應用中添加了對互聯網的許可。 手機通過3G連接,我的電腦通過寬帶連接。 netcat被允許在我的防火牆中。

當我嘗試連接時,我的應用程序出現SocketTimeoutException錯誤。

我猜路由器負責處理LAN中的哪臺計算機將收到請求。

任何人都知道我錯過了什麼?

編輯:我想我可能已經找到了問題..我有我的路由器Virtual ServerPort forwarding兩個選項。我不知道在UDP/TCP中哪個設置到端口5555。 http://dl.dropbox.com/u/4385192/2011-11-19%2003.17.53%20pm.png enter image description here 從我所瞭解的Virtual Server我應該使用,而不是端口轉發?如果是這樣,有人可以澄清兩者之間的區別嗎?

+1

嘗試'outToServer.flush()'。 –

+0

我同意@Brett Hale。在s.close()之前嘗試outToServer.flush()。你會在哪一行發生異常? –

+0

您是否在Server類中設置了ServerSocket對象來偵聽端口5555中的請求? –

回答

1

從去年的配置我的電腦已經改變了本地IP,所以我Virtual Server/Port Forwarding規則不適用,所以我更新了它(從192.168.0.199 - > 192.168.0.19 ),現在它的作品很好。

所以應用的所有步驟:

  • 設置Virtual Server/Port Forwarding規則你的路由器上。
  • 在您的路由器上設置Inbound Filtering的規則,以防您希望僅允許白名單IP連接並傳播到下一個安全層。
  • 如果您的路由器有其他防火牆設置,請創建規則以允許建立連接。
  • 在您的服務器/計算機上,允許防火牆中的端口或正在運行的應用程序接收入站連接。
  • 利潤!
+1

我很高興你解決了這個問題。它只是一個改變了的IP地址。也許下次更好的是分配與特定MAC地址相關的相同IP地址。在局域網部分,DHCP設置中,你可以做你的路由器,我想你不能相信這個問題很容易解決:-) –

+1

@AlbertS:謝謝你的真誠幫助:) – Zolomon

+0

你是歡迎。 :-) –

相關問題