服务器:
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
引用:
.. ServerSocket.accept()接受连接,并将端点包装在中 一个插座。端点具有与之相同的本地端口号 ServerSocket,根据RFC 793的定义,因此也是如此 包裹套接字。
和
..每个客户端连接将获得一个单独的Socket进行通信, 所有通信使用相同的服务器端TCP端口。
答案 0 :(得分:3)
getPort()
返回套接字的远程端口(即其他端地址),而getLocalPort()
返回套接字绑定的本地端口。
如果您在服务器接受的套接字上运行s.getLocalPort());
,那么您也会获得7000
。