c-ares の大雑把な機能紹介
c-ares については過去の記事で少し触れた。c-ares は以下に詳細な API リファレンスが存在するが、Web サイトトップより詳しく、API リファレンスよりも大雑把な機能紹介がないのがもったいない。
というわけで、c-ares を簡単に紹介しておく。まずは Web サイトトップに書いてあること。
- 非同期名前解決ができる
- 大抵のプラットフォームで呼び出すことができる gethostbyname、getaddrinfo は同期呼び出しのみ
- C ライブラリとして提供される
- IPv6 に対応している
- 様々なプラットフォームに対応していて移植性に優れている
- 今も活発に開発が行われている
- メーリングリストが活発
- メインメンテナの Daniel Stenberg 氏が活発
ソースコードを見たり実際にコードを書いたり実行したりして分かったこと。
- 非同期処理中の待機処理は、基本的に呼び出し側で select を使って行う
- ares_getsock()を使えばプラットフォームに適したもっと効率のよい待機処理ができるだろう
- ares_gethostbyname
- 名前解決するときに DNS サーバ名とそのポートを指定することができる
- DNS クエリを投げるだけでなく、hosts ファイルの内容を加味してくれる
- https://github.com/bagder/c-ares/blob/master/ares_gethostbyaddr.c#L180
- ただし、Windows で hosts ファイルのパスが Unicode には対応していない模様
- IDN への対応はまだっぽい?
Daniel Stenberg 氏は、自身の HTTP クライアントアプリ、ライブラリである curl、libcurl のためにこれを作ったらしい。映画のソーシャル・ネットワークでは、wget が出てくるらしいが curl でないのが少し残念である。
ソーシャル・ネットワーク 【デラックス・コレクターズ・エディション】(2枚組) [DVD]
- 出版社/メーカー: ソニー・ピクチャーズエンタテインメント
- 発売日: 2011/05/25
- メディア: DVD
- 購入: 12人 クリック: 266回
- この商品を含むブログ (139件) を見る