どのように私は動的に一つだけのネットワークインターフェースにソケットをバインドしますか?

StackOverflow https://stackoverflow.com/questions/1119401

  •  12-09-2019
  •  | 
  •  

質問

現在、私はすべてのインターフェイスで使用可能な任意のポートでリッスンするように次の手順を実行します:

// hints struct for the getaddrinfo call
struct addrinfo hints, *res;
memset(&hints, 0, sizeof hints);
hints.ai_family = AF_INET;
hints.ai_socktype = SOCK_STREAM;
hints.ai_flags = AI_PASSIVE;

// Fill in addrinfo with getaddrinfo
if (getaddrinfo(NULL, "0", &hints, &res) != 0) {
    cerr << "Couldn't getaddrinfo." << endl;
    exit(-1);
}

私は動的に1つのインタフェースのみ、システムの非ループバックインタフェースにバインドしたいと思います。

どのように私はこれをやって行くのでしょうか?

役に立ちましたか?

解決

SO_BINDTODEVICEを見てみましょう。 Tuxologyは、こののhref="http://tuxology.net/tag/interface/" rel="nofollow noreferrer">良い説明する

他のヒント

あなたが問題に優れた書籍をしたい場合:

W.リチャードスティーヴンスによってUNIXネットワークプログラミング、2巻インチボリューム1は、ソケットをカバーしています。

また、高度もスティーブンスによるUNIX環境でのプログラミング、およびRagoにより第3版に更新されます。

これらは広く、

UNIX / Linuxの/らのための古典と標準的な参考文献であると考えられています

あなたは、特定のインターフェイスのIPアドレスを決定するためにSIOCGIFADDRのioctl()を使用して、そのアドレスにbind()することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top