• ベストアンサー

C言語のsocket関数で、複数NIC実装PCはどうなるのでしょうか?

UNIX-C言語で、TCP/IP通信を勉強していて、疑問にぶつかったのですが、 複数のNIC(もしくはIPアドレス)を実装しているPCは、 自分のIPアドレス(gethostby***関数などで)を取得したばあい、 どのように見えるのでしょう? また、そのPCがC/S構成におけるserver側だった場合、 bind()関数に設定するIPアドレスはデータ通信したい側のNICの IPアドレス一つでいいのでしょうか。 NIC2枚挿しのPCが身近にないので、実験できません(^^;) どなたかご教授いただけませんでしょうか m(_ _)m

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

  • ベストアンサー
  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.1

1. gethostby****関数は複数のIPアドレスを報告します。 NIC複数挿し、クラスタリングによる複数IPの可能性がありますが、クライアントとしてはそれらを区別する必要はありません。 struct hostentのh_addrlistは複数IPアドレスに対応してchar **となっています。 2.bindには「全てのNIC」というオプションがあります。 struct in_addrを設定する時にIPアドレスとしてINADDR_ANYを設定すれば全てのNICに対してbindされます。

mijuku
質問者

お礼

詳細な説明ありがとうございました。 きちんとした意味をしらずに、gethostby****や、bindなどの関数を 使用していたのだな、と思い知りました(^^;) まだ、知らなずに使っていることも多々あると思いますが、 できるだけ不明点を残さずに、事にあたろうと思います。 これだけ頼りになる皆様がいるのですから(^^)

関連するQ&A