这是我第一次使用IPEndPoint,所以原谅我缺乏经验。
如果我像这样创建一个IPEndPoint:
IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Parse("192.168.1.25"), 0);
端口0是否可能已经在使用中,这会产生异常?这里是否有任何类型的约定要使用本地端口号?我应该只使用一个小于65,536的随机生成的数字吗?选择端口是否有最佳或最安全的方法,甚至是否重要?
此特定实例中的用例仅供我学习。我现在正在摆弄发送UDP广播WOL数据包,但后来我希望进入更复杂的代码。我只是想确保我理解最佳实践。
答案 0 :(得分:2)
首先,您需要检查一下是否在干扰任何standard windows service ports
在这种情况下随机是一种非常糟糕的方式,该端口可能正在被其他应用程序使用。
但你总是go here并选择一些未分配的东西。
在那里,IANA说
动态和/或专用端口是49152到65535
的端口
答案 1 :(得分:2)
根据IANA
根据三个范围以不同方式分配端口号: 系统端口(0-1023),用户端口(1024-49151),以及动态和/或 私人港口( 49152-65535 );这些范围的差异用途是 在[RFC6335]中描述。系统端口由IETF进程分配 标准跟踪协议,根据[RFC6335]。用户端口已分配 IANA使用“IETF审核”流程,“IESG审批”流程, 或者根据[RFC6335]进行“专家审查”流程。动态端口是 没有分配。
同样来自UdpClient(端口)ctor MSDN文档:
如果将0传递给构造函数,则基础服务提供者将分配端口号。