我無法從我的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 Server
和Port forwarding
兩個選項。我不知道在UDP/TCP中哪個設置到端口5555。 從我所瞭解的Virtual Server
我應該使用,而不是端口轉發?如果是這樣,有人可以澄清兩者之間的區別嗎?
嘗試'outToServer.flush()'。 –
我同意@Brett Hale。在s.close()之前嘗試outToServer.flush()。你會在哪一行發生異常? –
您是否在Server類中設置了ServerSocket對象來偵聽端口5555中的請求? –