プロが教える店舗&オフィスのセキュリティ対策術

gethostbyname関数は無駄がなく思えるのですが、MSDNでは「これからはgetddrinfoを使っていけ」みたいなことをgethostbyname関数の説明に加えています。

gethostbyname関数もIPの長さは可変に対応してますよね?
何の都合があってgetaddrinfoを使わなければいけないのでしょうか。

getaddrinfoって、なんだかややこしい割に得られる情報が大したことない(他の手段で簡単に得られる)し、ai_canonnameなど、指定した情報がそのまま格納されるだけな気がしますが・・。

A 回答 (1件)

最大の理由は、gethostbyname が返す領域のメモリが非常に扱いにくいからだったかと。


古いC言語の関数にありがちな一見簡単に使えるが危険も多い用法で、戻り値の格納領域を gethostbyname の内部で持つので、この領域の開放タイミングがライブラリ提供側には判断ができず。
ユーザ側での排他制御を前提としたり、必要に応じて結果をコピーする必要がでたり、スレッドセーフティ等の面で問題が見えてきたので、これが getaddrinfo が新しく策定された動機のはずです。
    • good
    • 0
この回答へのお礼

回答どうもありがとうございます。

あぁHOSTENT構造体は1つしか作成できないのに対してADDRINFO構造体はいくつでも作成可能というメリットはあるみたいですね。

でも、ソースを見るときに見にくいことは見にくいですよねぇ・・。

お礼日時:2006/04/05 14:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!