【发布时间】:2015-11-11 05:34:07
【问题描述】:
我从here 阅读了一些套接字编程示例代码。我突然想到一个问题。
构建一个 TCP 套接字连接需要一个 4 元组:
<client address, client port, server address, server port>
但似乎只有<server address, server port> 在客户端和服务器代码中都明确指定。而这个server port只是用来监听的,并不是服务器真正用来通信的。
那么谁来决定<client address, client port>?为什么不由客户端代码的程序员明确说明?
添加1
更正,似乎上面的粗体部分不正确。服务器端口不变。 参考:Does the port change when a TCP connection is accepted by a server?
【问题讨论】:
-
我猜如果没有指定,内核会决定连接服务器的客户端端口。但是,对于 Java 中的示例,有一个 API,您可以在其中显式指定表示客户端 Socket 的本地地址和端口。
public Socket(String host, int port, InetAddress localAddr, int localPort)link