我正在使用 UdpClient 将数据包发送到服务器。我正在使用 (hostname, port) 构造函数在构造我的 Sender 对象时初始化 UdpClient。当以这种方式构造时,UdpClient 将主机名解析为 IP 地址。对 UdpClient 对象的后续调用使用 IP 地址。
不幸的是,如果使用的 DNS 别名通过 DNS 系统更新以指向不同的 IP 地址,则此更改不会反映在我的 Sender 对象中,除非重新创建它。
让我的 Sender 对象及时响应 DNS 更改的最佳方式是什么?性能非常重要。我可以想到几个解决方案:
- 对每次调用进行 DNS 解析(即使用接受主机名参数的发送重载)。由于 Windows DNS 缓存,这实际上可能非常快,我不知道。
- 在计时器线程上运行某种 DNS 检查器,以定期检查 DNS 别名是否解析为不同的 IP。如果是这样,它会以某种方式更新 UdpClient 以使用新的 IP 地址。但是,我真的不想在每次调用时都锁定 UdpClient 对象——正如我所说,性能很重要。
有人有这样做的经验吗?