0

関数 getaddrinfo を使用して、ドメイン名、OS = linux、言語 = c++ の IP アドレスを取得します。イーサネット ケーブルが取り外されると、関数が 30 秒間スレッドをブロックできることに気付きました (関数は 30 秒以内に戻りません)。私には長すぎます。その関数のタイムアウトを設定したり、関数の実行を中断したり、その他のアイデアを中断したりすることは可能ですか?

ありがとうEB

4

1 に答える 1

2

glibcgetaddrinfo_aは を提供します。これにより、非同期の名前検索が可能になります (たとえば、ブロックされません)。

より移植性の高いものとして、 adnsc- ares などの非同期リゾルバーがあります。または、別のスレッドでリゾルバーを実行することもできます。

于 2011-02-02T22:27:18.650 に答える