• ベストアンサー

LAN2枚ざしの時のソケット通信

ソケット通信のプログラムを作成しています。 そのマシンはサーバー側なのですが LANカードが2枚刺さっている構成をしています (一応、LANカードごとにIP帯は違います) そのような場合は LANカードどちらかを「指定」する必要があると聞きました。 ですが、 調べてももそれらしい情報が出てきません。 よい情報が載っているページがありましたら よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.3

普通サーバアプリケーションは自分がlistenするIPアドレスと ポート番号を外部から指定させます。 自分がbindしたいアドレスの情報をgetaddrinfoなどで取得し、 ソケットを作成した後同じ情報を使ってbindすることもできます。 IPアドレスはLAN上で一意になるので、IPアドレスを関連付ければ 自ずとインターフェースカードも特定されます。

maki_hiro
質問者

お礼

お礼が遅くなりましたが うまく解決できました ありがとうございました。

その他の回答 (2)

  • okg00
  • ベストアンサー率39% (1322/3338)
回答No.2

http://www.geekpage.jp/programming/winsock/tcp.php これの事かな? bindの第2引数。

参考URL:
http://oshiete1.goo.ne.jp/qa2299344.html
maki_hiro
質問者

お礼

お礼が遅くなりましたが うまく解決できました ありがとうございました。

  • i-kujou
  • ベストアンサー率50% (13/26)
回答No.1

LANカード、というよりもネットワークインターフェイスが複数ある場合の話だと思われますが、こちらから接続詞に行く場合(connectする場合)は基本的に指定は必要ありません。 接続先のIPのルーティングに沿って、必要なネットワークインターフェイスを利用して接続しに行きます。 問題はlistenする場合です。listenする場合はlistenポートを指定するためにソケットに対しbindを行っていると思いますが、この際にIPアドレスを指定するとそのIPアドレスが割り当てられているネットワークインターフェイスからのみ接続を受け付けるようになるはずです。 #INADDR_ANY はどのネットワークインターフェイスからも接続を受け付ける、という指定になります。

maki_hiro
質問者

お礼

お礼が遅くなりましたが うまく解決できました ありがとうございました。

関連するQ&A