-1
服務器:爲什麼ServerSocket使用不同的端口提供Socket?
int port = 7000
ServerSocket ss;
..
System.out.println("Listening on " + ss.getInetAddress() + ":"
+ ss.getLocalPort());
Socket s = ss.accept();
..
System.out.println("Accepted connection " + s.getInetAddress() + ":"
+ s.getPort());
客戶:
Socket s;
..
System.out.println("Connected to " + s.getInetAddress() + ":"
+ s.getPort());
服務器開始監聽:
Listening on 0.0.0.0/0.0.0.0:7000
客戶端連接:
Connected to localhost/127.0.0.1:7000
但服務器說,套接字連接在不同的端口上?
Accepted connection /127.0.0.1:54682
引用:
Java the difference of Socket and ServerSocket in using port
..的ServerSocket.accept()接受一個連接,幷包裝在 一個Socket端點。根據RFC 793定義,端點具有與 ServerSocket相同的本地端口號,因此 也包裝Socket。
和
..每個客戶端連接將得到一個單獨的插座上進行通信, 所有通信使用相同的服務器側的TCP端口。
確認:接收端的getPort()是客戶端的傳出臨時端口? – Zhro
@Zhro:我寧願說在服務器端。通常,'getPort()'總是返回遠程端口,即客戶端的服務器和服務器偵聽端口的客戶端計算機端口。 –
@Zhro我寧願說它會返回遠程端口,根本不考慮客戶端和服務器。連接完成後,只有本地端和對等端。 – EJP