2012-02-27 43 views
0

嗨我正在做android開發,並發現使用套接字API時奇怪。Android Java ServerSocket端口號不是它應該是的

,我從

ServerSocket server = new ServerSocket(4444); 
Socket client = server.accept(); 

client.getPort(); 

創建的套接字之間沒有4444

由於端口數量幾乎是隨機的,則客戶端無法與服務器應用程序進行通信。 任何信息或建議都將有所幫助!

完整的示例項目在這裏。

http://vext.eclipselabs.org.codespot.com/files/SocketTest.zip

提前感謝!

+0

這是如何的Android?如果您在電話上使用此功能,您將收到BindAddress錯誤。 – JPM 2012-03-29 21:27:11

+0

*非客戶端*客戶端端口號確實幾乎是隨機的,但不會跟隨客戶端無法與服務器進行通信。這就是TCP的工作原理。顯然,服務器知道客戶端端口,也知道IP地址。這裏沒有問題要解決。 – EJP 2016-01-19 01:03:49

回答

4

頭第一個Java參考:

enter image description here

+0

這麼清楚。謝謝你! – user1165390 2012-02-28 21:16:38

+0

@ user1165390,很高興幫助,考慮接受答案,如果你認爲它是有幫助的。 – yorkw 2012-02-28 22:48:47

0

當客戶端套接字服務器套接字其將採取客戶機上的隨機空口(未使用的端口)..但這個客戶端應該連接到服務器與特定端口...

當指定服務器套接字港口;你正在聽這個端口。並且在接受新套接字連接時,您應該爲連接的客戶端創建一個特定引用並繼續偵聽傳入的新連接;然後使用此引用與您的客戶端連接進行通信。

0

from Java Docs of Socket class public int getPort() 返回此套接字連接到的遠程端口。 返回: 該套接字連接的遠程端口號,如果套接字尚未連接,則返回0。

嘗試調用的getLocalPort()

相關問題