自分のマシン(eth0-2)に3つのネットワークインターフェイスがあり、それぞれ独自のネットワークサブネット192.168.10を持っています。 ,192.168.20。,192.168.30。 。私はBSDソケットを使って1つのポートで特定のNICのポートをリッスンしているのだろうかと疑問に思っていました。たとえば、eth1(192.168.20。)のポート10000でリッスンします。 。私が現在使用しているOSはUbuntuですが、私はPOSIXシステム上で動作するようにしたいと思います。特定のNICにposix形式でバインドする
私はC++で自分のアプリケーションを開発していますが、C++のネットワーキングライブラリに関するガイダンスを参考にしていますが、私はQtを見てきましたが、ライセンスは開発タイプには適していませんやって
'getsockname()'を使って 'accept()'によって返されたソケットに使われたローカルアドレスを知ることができます。 – caf
cafが述べたように、回線のサーバアドレスを知る必要がある場合は、 'getsockname()'を使います。あなたが聞きたいアドレスのそれぞれを知っていれば、別のリスニングソケットを使うのはいいですが、すべてのインターフェースでリッスンしたいならば、 'IPADDR_ANY'と' getsockname() 'を使うのが良いでしょう。クライアントに応じて、あなたは一丸となって悪い考えのように思えます。しかし、あなたはこれを必須のものとは言いません... – janm
私はgetsockname()について知りませんでした。提案に感謝します。 –