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.1
ipv4の場合、::1
ipv6の場合)。
指定された場合はAI_PASSIVE
「ワイルドカード」アドレス(0.0.0.0
ipv4の場合、::
ipv6の場合)を返します。
記事全体を読むことができます。基準AI_PASSIVE
、「フラグが指定されたら…」で始まる段落で
引用したマンページにもすべてが明確に説明されています。