ホスト解決をブロックするためのgetaddrinfo()
ものがありますが、非ブロック方法はありますか?
4 に答える
そのようなことはないと思いますが、いつでもスレッドでラップし、セマフォを使用して完了を通知できます。
Linuxにはgetaddrinfo_a()
。StackOverflowタグgetaddrinfo-aを参照してください。たとえば、この質問「getaddrinfo_aを使用してglibcで非同期解決を行う方法」などです。しかし、これはWindowsには当てはまらないと思います。
非同期DNS要求用のクロスプラットフォームライブラリc-aresがあり、これはWindows上で実行されることを示しています。(私はそれを自分で試していません。)
GetAddrInfoExのMSDNページから、OVERLAPPED
パラメーターは次のように述べています。
Windows7およびWindowsServer2008 R2以前では、このパラメーターは現在予約されており、非同期操作はサポートされていないため、 NULLに設定する必要があります。
OVERLAPPED
つまり、この機能はWindows8以降でのみ使用できます。スティーブが古いバージョンのウィンドウで動作することを別の方法で示すことができない限り...
WindowsVistaおよびWindowsServer2008から、OVERLAPPED構造でGetAddrInfoExを使用できます。
hEvent
イベントがOVERLAPPED
構造体に設定されたら、GetAddrInfoExOverlappedResultを使用します。