MSDN里有一句话,
“如果您不关心使用哪个本地端口,您可以使用 0 作为端口号创建一个 IPEndPoint。在这种情况下,服务提供商将分配一个介于 1024 和 5000 之间的可用端口号”
我的困惑是:当客户端想要连接到服务器时,
客户端是否还需要知道服务器正在监听哪个端口?
或者客户端只是连接到 0 端口。
谢谢。
客户端仍然需要知道服务器实际绑定到哪个端口,并连接到该端口。
这方面的一个例子是在FTP
协议中。通常在使用主动模式时,服务器使用一个(已知的)端口进行命令,并绑定一个额外的动态端口进行数据传输。当数据传输开始时,服务器通过命令通道向客户端发送消息中的实际端口,然后客户端连接到它刚刚获知的(伪随机)数据端口以获取实际的文件数据。
当您连接到服务器时,您必须知道 ip+port 决定您的应用程序链接远程服务器上的哪个进程。
像这样连接套接字
你的:IP服务器:Ip < ============================================ ==================>你的:端口服务器:端口
所以在客户端。你不在乎哪个本地端口。当您连接到服务器时,服务器已经知道端口。