サーバーにパケットを送信するために UdpClient を使用しています。(ホスト名、ポート) コンストラクターを使用して、Sender オブジェクトの構築時に UdpClient を初期化しています。この方法で構築されると、UdpClient はホスト名を IP アドレスに解決します。UdpClient オブジェクトへの後続の呼び出しでは、IP アドレスが使用されます。
残念ながら、使用されている DNS エイリアスが DNS システムを介して別の IP アドレスを指すように更新された場合、この変更は Sender オブジェクトを再作成しない限り反映されません。
Sender オブジェクトを DNS の変更にタイムリーに反応させる最善の方法は何ですか? パフォーマンスは非常に重要です。私はいくつかの解決策を考えることができます:
- すべての呼び出しで DNS 解決を実行します (つまり、ホスト名パラメーターを受け入れる Send オーバーロードを使用します)。Windows DNS キャッシュのおかげで、これは実際には非常に高速である可能性がありますが、わかりません。
- DNSエイリアスが別のIPに解決されるかどうかを定期的にチェックするために、タイマースレッドである種のDNSチェッカーを実行します。その場合、何らかの方法で UdpClient を更新して、新しい IP アドレスを使用します。ただし、すべての呼び出しで UdpClient オブジェクトをロックしたくはありません。前述のとおり、パフォーマンスは重要です。
誰でもこれを行った経験がありますか?