- 締切済み
winsockで複数のLANカードを使用するには
winsock初心者です。 TCPまたはUDPにて1枚のLANカードで通信するプログラムはよくあるのですが 複数のLANカードで通信する場合の参考プログラムがありません。 具体的には, UDPクライアントを作成する場合,指定したLANカード(IPアドレス)に生成したsocketとリンクして通信させたいのです。 bind()のsockname.sin_addr.s_addrにてINADDR_ANYではなくカードに設定したIPアドレスを設定すればよいのでしょうか? 同じ疑問がTCPクライアント作成でもあります。 この場合bind()ではなく,connect()で送信したいカードに接続されるサーバー側のIPアドレスを指定するということでしょうか? また2枚のカードを使用する場合,同じネットワークアドレス(192.168.0.XXX)は使用しない方が良いのでしょうか?(UDPブロードキャストだと両カードで送信してしまう?) 色々調べてますがこれだという回答がみつかりません 誰かご存知でしたら御教示願います。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- ackapapa
- ベストアンサー率44% (8/18)
複数のNICがある場合はIPアドレスを検出して そのIPアドレスでbindなどしないとだめだと思います。 以下の「ネットワークインターフェース情報を取得する」と 「ネットワークインターフェースのIPアドレス情報を取得する 」が参考になるかと http://www.geekpage.jp/programming/iphlpapi/ 1台のPCにある複数のNICで同じIPを指定するのはお勧めしません。 http://www.atmarkit.co.jp/fnetwork/rensai/troutol03/02.html ちょっと変なたとえかもしれませんが同じ住所に複数人が住んでいて 「住所に対して宛てた手紙」が来た場合 誰宛かわかりませんからね
- osamuy
- ベストアンサー率42% (1231/2878)
IPネットワークの場合、経路情報からどのインタフェースを使うかを決定しますので、通信を開始する前にrouteコマンドとかで事前に経路情報を変更するといったプログラムにしてみては。 そんなことすると、なんか安定して通信できなさそうな気がしないでもないですが。