代码之家  ›  专栏  ›  技术社区  ›  Matt Howells

如何让UdpClient对DNS更新作出反应

  •  0
  • Matt Howells  · 技术社区  · 15 年前

    我正在使用UdpClient向服务器发送数据包。我正在使用(主机名,端口)构造函数在构造发送方对象时初始化UdpClient。以这种方式构造时,UdpClient将主机名解析为IP地址。对UdpClient对象的后续调用使用IP地址。

    让我的发件人对象及时响应DNS更改的最佳方式是什么?性能非常重要。我可以想出几种解决办法:

    1. 对每个调用执行DNS解析(即使用接受主机名参数的发送重载)。由于Windows DNS缓存的原因,这实际上可能相当快,我不知道。
    2. 在计时器线程上运行某种DNS检查器,定期检查DNS别名是否解析为不同的IP。如果是这样,它将以某种方式更新UdpClient以使用新的IP地址。但是,我并不想在每次调用时都锁定UdpClient对象——正如我所说的,性能很重要。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Erich Mirabal    15 年前

    我会把地址和决议分开 UdpClient .

    1. Dns 归类于 resolve IPaddress (并存储在局部变量中)
    2. 使用的无参数构造函数 ,
    3. 使用显式 Send IPEndPoint 参数

    在后台线程上:

    1. IPEndPoint UdpClient.Send 呼叫

    没有必要破坏你的电脑 UDP客户端 每次你这么做。 IPEndPoint