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