-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