- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:TCP/IP通信に関する質問です。)
TCP/IP通信に関する問題と解決方法
このQ&Aのポイント
- TCP/IP通信に関連する問題が発生しました。PC1とPC2を一つのハードウェアにまとめる際の解決方法を探しています。
- PC3をクライアントとして使用し、PC1とPC2との通信を行うTCP/IP通信システムを作成しました。しかし、PC1とPC2を一つのPCにまとめたいという要件が発生しました。
- 現在の考えは、一台のコンピュータで仮想マシンを二台立ち上げる方法ですが、他に有効な解決策があるかどうか、教えていただきたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> 一台のコンピュータにおいて、一つのNICに複数のIPをふることはできましたが、 > 同じポート番号のソケットを作成するのはできないと思っています。 できますよ。 着信IPアドレスにINADDR_ANY、着信ポート番号に20000を指定してbind()を発行し accept()で着信を待てば、複数のIPのどれで着信してもポート番号20000への 着信は全て受けられますよ。 着信IPアドレスに、複数のIPのどれか1つを設定したら、そのIPで着信した場合 のみ着信を受け付けます。 普通はINADDR_ANYを指定し、どんなIPが割り当てられていても受け付けるようbindします。 なので、1つのNICに複数のIPをふるのが最も簡単だと思います。 ただ、着信ポート20000を受け付けるサーバーアプリがINADDR_ANYでbindしてないとか 同時接続数に制限があるといったことがもしあるなら、サーバーアプリの改造が必要に なる場合もあると思います。
補足
ご回答ありがとうございます。 なるほどサーバソケットのaddr.sin_addr.s_addrの値は、クライアントのIPアドレスではなく、サーバのアドレスなのですね。 勘違いしていました。 上記の方法を試してみたいと思います。 結果が確認できたらもう一度報告させて頂きます。 貴重な情報ありがとうございましたm(_ _)m