3

C でソケットを介してプログラミングする場合、関数をノード asおよびフラグ in でgetaddrinfo呼び出すことにより、関数を介してインターフェイスに関する情報を自動的に取得できます。ing およびing 接続に適した構造のリストを返します。デフォルト インターフェースが設定されたマルチホーム ホストでは、正しいインターフェースではない可能性があるデフォルト インターフェースに関連する構造体が返されます。適切なインターフェイスを選択できるように、使用可能なすべてのインターフェイスから構造体を返すように呼び出す方法。NULLAI_PASSIVEhints.ai_flagsaddrinfobind()accept()getaddrinfogetaddrinfo

4

1 に答える 1

1

ノードをNULLに設定したいかもしれません。必要なインターフェイスの IP アドレスに設定します。

socket_result = getaddrinfo(NULL, port_num_string, &hints, &sock_addr_list);

socket_result = getaddrinfo("192.168.1.10", port_num_string, &hints, &sock_addr_list);

マニュアルページから:

リンクされたリストが複数の addrinfo 構造を持つ理由はいくつかあります。たとえば、ネットワーク ホストがマルチホームで、複数のプロトコル (たとえば、AF_INET と AF_INET6 の両方) を介してアクセスできます。または、同じサービスが複数のソケット タイプ (たとえば、1 つの SOCK_STREAM アドレスと別の SOCK_DGRAM アドレス) から利用可能です。

getifaddr を使用して、すべてのインターフェースを手動で検索します。

于 2012-02-15T23:55:05.823 に答える