本地IPEndPoint创建的端口选择.端口号重要吗



这是我第一次使用IPEndPoint,请原谅我缺乏经验。

如果我创建这样的IPEndPoint:

IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Parse("192.168.1.25"), 0);

端口0是否可能已经在使用中,从而产生异常?对于要使用的本地端口号,这里有什么类型的约定吗?我应该只使用一个小于65536的随机生成的数字吗?有没有最好或最安全的方法来选择港口?这有关系吗?

这个特定实例中的用例只是为了让我了解更多。我目前正在处理发送UDP广播WOL数据包的问题,但稍后我会处理更复杂的代码。我只是想确保我了解最佳实践。

根据IANA

端口号根据三个范围以各种方式分配:系统端口(0-1023)、用户端口(1024-49151)以及动态和/或专用端口(49152-65535);这些范围的不同用途是如[RFC6335]中所述。系统端口由IETF过程分配标准跟踪协议,根据[RFC6335]。已分配用户端口IANA使用"IETF审查"流程、"IESG批准"流程,或根据[RFC6335]的"专家评审"程序。动态端口是未分配。

同样来自UdpClient(端口)ctor MSDN文档:

如果将0传递给构造函数,则基础服务提供程序将分配一个端口号。

首先,您需要检查是否干扰了任何标准的windows服务端口

在这种情况下,随机是一种非常糟糕的方式,端口可能正在被其他应用程序使用。

但你可以随时到这里选择一些未分配的东西。

IANA说

动态和/或专用端口是49152到65535 之间的端口

最新更新