C++で2台のPC間でTCP通信を用いたソケット通信を行うプログラムを作っています。
現在は設計の段階です。
1つのプロセスの中で、サーバの機能とクライアントの機能を実現したいので、メインスレッド内で、サーバスレッドと、メインスレッド上で動作するクライアント部を作り、サーバとして受信をしつつ、クライアントとして送信を行う事を想定しています。
ここで1つの疑問が生じたのですが、受信と送信でソケットを2つ作るのですが、この2つのソケットに対して、ネットワークインタフェース(Ethernet)のLANの口は1つしかないですが、片方のソケットがネットワークインタフェースを占有してしまい、もう片方のソケットがそのネットワークインタフェースを利用できないというような状況にはならないのでしょうか?
サーバとして作ったソケットと、相手のサーバに対して接続要求を行うクライアントのソケットでは、別々のポート番号とIPアドレスを割り振ってあって、スレッドを使用して同時に処理が行われると思っているのですが、ソケットがどのようにネットワークインタフェースに対応しているのかが分かりません。
Ethernetでは、受信と送信の2つの通信路をケーブル内で持っているので、送受を同時に行えるということは分かったのですが、その前の段階でソケットからEthernetに対して同時に送受を行うことができるのかどうかが分かりません。
以上、よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。