「なでしこv1」開発掲示板

なでしこv1のバグや要望を書き込む掲示板

(#2815) TCP通信の基本 - うぇいく (2017-09-21 21:53) /低 詳細求む!
送信する塊の括りで受信するわけではないため、常にバッファに追加書きで貯め込みながら、開始記号と終了記号がそろうごとに、そろった範囲のみを処理をする必要があります。
・開始ししか受信してない。
・前回開始受信済みで今回も終了は無い(途中しかない)
・開始と終了が複数セットまとまって受信する
・前回開始を受信していて、今回は終了と開始を受信して、2つ目の終了はない。
・1バイトづ受信する
といういろいろな可能性があります。
順序は保障されますが、送信した単位という概念はありません。なので、受信処理内でクリアしてよいのは、最後に開始とペアになった終端記号までで、それ以降は残して次で使う必要があります。そのため、受信処理内でローカル変数にコピーせずに、先頭から切り取りながら処理した方が良いと思います(後から戻そうともうと、受信イベントでの追加とコンフリクトする可能性が。
※開始記号や終端記号そのものを複数バイトにした場合、それらが分かれて受信する可能性もあり、より複雑になります。

TCPで送信したデータがよく欠損する? / とけい (2017-09-21 20:11) (#2814)/ 低 詳細求む!
  TCP通信の基本 / うぇいく (2017-09-21 21:53) (#2815)/ 低 詳細求む!
    「受信した時」の発生タイミング / とけい (2017-09-21 23:04) (#2816)/ 低 感謝
  解決 / クジラ飛行机 (2018-12-31 12:43) (#2871)/ 低 解決

(#2815)へ返信する:

👆お手数ですが、いたずら防止のために、「真夏」の読み方を記入してください。

編集時に使うキーを入力(省略可能)

画像ファイル(最大300KB)を添付可能