どのように私は動的に一つだけのネットワークインターフェースにソケットをバインドしますか?
質問
現在、私はすべてのインターフェイスで使用可能な任意のポートでリッスンするように次の手順を実行します:
// 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つのインタフェースのみ、システムの非ループバックインタフェースにバインドしたいと思います。
どのように私はこれをやって行くのでしょうか?
他のヒント
あなたが問題に優れた書籍をしたい場合:
W.リチャードスティーヴンスによってUNIXネットワークプログラミング、2巻インチボリューム1は、ソケットをカバーしています。
また、高度もスティーブンスによるUNIX環境でのプログラミング、およびRagoにより第3版に更新されます。
これらは広く、
UNIX / Linuxの/らのための古典と標準的な参考文献であると考えられていますあなたは、特定のインターフェイスのIPアドレスを決定するためにSIOCGIFADDRのioctl()
を使用して、そのアドレスにbind()
することができます。
所属していません StackOverflow