getaddrinfo() を使用すると、ホストなしでサービスを指定できます。これはどういう意味ですか?

getaddrinfo() を使用すると、ホストなしでサービスを指定できます。これはどういう意味ですか?

man getaddrinfo:

 int getaddrinfo(const char *node, const char *service,
                       const struct addrinfo *hints,
                       struct addrinfo **res);

ノードまたはサービスのいずれか(両方ではない)がNULLになることがあります。

単に指定し、特定のホストに関連する利用可能なすべてのサービスを提供することはnode理解できます。しかし、aを指定せずにaのみを指定した場合はserviceどういう意味ですかnode/host?ネットワーク上のすべてのホストをスキャンしますか?

ベストアンサー1

ノードを指定すると、1 つの特定のホストに関連する利用可能なすべてのサービスを提供することは理解できます。

絶対にしないでください。サービスがある場合、NULL返されるaddrinfo構造のポート/サービスはに設定されます0いいえホストで使用可能な各サービスの構造を返します。

しかし、ノード/ホストではないサービスのみを指定した場合はどういう意味ですか?

AI_PASSIVEに指定されていない場合は、.ai_flagsループデバイスのアドレスを返します(127.0.0.1ipv4の場合、::1ipv6の場合)。

指定された場合はAI_PASSIVE「ワイルドカード」アドレス(0.0.0.0ipv4の場合、::ipv6の場合)を返します。

記事全体を読むことができます。基準AI_PASSIVE、「フラグが指定されたら…」で始まる段落で

引用したマンページにもすべてが明確に説明されています。

おすすめ記事