ソケットは2つの独立した半二重チャネルと見なすことができることをどこかで読んだことを覚えています。recv()
同じソケットのとsend()
が実際には無関係であることを意味しますか?
- もしそうなら、それは定義によるものですか、それとも実装固有のものですか?
- そうでない場合、2つは互いにどのように干渉しますか?
ありがとう。
ソケットは2つの独立した半二重チャネルと見なすことができることをどこかで読んだことを覚えています。recv()
同じソケットのとsend()
が実際には無関係であることを意味しますか?
ありがとう。
彼らがお互いに干渉するだろうとあなたがどう思うか興味があります。あなたはあなたが送ったものを受け取るかもしれないと思っていますか?
SOCK_STREAMの場合、send/recvを同時に使用できます。
例:2つのスレッドがあり、1つはデータの送信を担当し、もう1つは次のように実行できるデータの受信を担当するとします。
メインルーチン:ソケットfdを取得します。このfdにバッファを送信するためのPOSIXスレッドを作成します。このfdから到着したデータを受信するPOSIXスレッドを作成します。サーバーに接続します。
スレッド1ルーチン:メッセージバッファを構築します。このfdにバッファを送信します。
スレッド2ルーチン:このfdからのrecvデータ。日付を処理します。