C#,套接字.使用0作为端口时绑定

本文关键字:绑定 套接字 使用 | 更新日期: 2023-09-27 18:24:57

在MSDN中,有一句话,

"如果您不在乎使用哪个本地端口,您可以使用0作为端口号创建IPEndPoint。在这种情况下,服务提供商将分配1024到5000之间的可用端口号"

我的困惑是:当客户端想要连接到服务器时,

客户端是否仍然需要知道服务器正在侦听哪个端口?

或者客户端只连接到0端口。

谢谢。

C#,套接字.使用0作为端口时绑定

客户端仍然需要知道服务器实际绑定到哪个端口,并连接到该端口。

FTP协议就是一个例子。通常,在使用活动模式时,服务器使用一个(已知)端口执行命令,并绑定一个额外的动态端口进行数据传输。当数据传输开始时,服务器通过命令通道向客户端发送消息中的实际端口,然后客户端连接到刚刚通知的(psudo随机)数据端口,以获取实际文件数据。

当您连接到服务器时,您必须知道ip+端口决定您的应用程序链接远程处理服务器上的哪个进程。

像那样的插座连接

您的:IP服务器:IP<================================================>您的:端口服务器:端口

客户端也是如此。您不在乎哪个本地端口。当您连接到服务器时,服务器已经知道该端口。