掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TCP/IPでの全二重通信を実現するには? (ID:67630)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> Ether Netの物理的原理は半二重通信です。 1000BASE-Tとか無視ですか? そもそも話をしている層が違いますが。 >車輪の再発明に時間を割くより、マルチスレッドにしたほうが >良いでしょう。 そのための非同期通信だと思いますが,マルチスレッドにする意義はあるのでしょうか。 単に送受信を行う目的だけのためにマルチスレッドにするのは効率が悪いだけだと思います。 > もしかしたら、送信イベントをタイマで行っているのが問題なのでしょうか。 > (ちなみに今は1秒毎に行っています) > 本来はメッセージ受信時に送信を行うべきなのかもしれませんが、 > メッセージが来ないと永遠にデータを送信することが出来ず・・・。 一度来たら,WSAEWOULDBLOCKエラーになるまでsendは続けて行うことができます。 http://msdn2.microsoft.com/en-us/library/ms740149.aspx 単に,WSAEWOULDBLOCKになるまでsendしていない上にタイマで間隔を開けているために,バッファが溜まりきっていないのでしょう。 > そこで、データを送信する際、明示的に 1Kbyte ずつ 10回に分けて送信を行うような > ロジックを作成し、その様なsendを行うことは、 > ソケット通信の手法として正しいことなのでしょうか。 無意味です。やるのは勝手ですが,それを行っても受信側が10KByte分1回で受け取る可能性は十分にあります。 また,サイズを最初に送る等の方法で末端を相手に知らせる必要があります。 # TCP/IP使うなら,パケットという考え方を捨てること。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.