08/04/23 16:09:50
>>123
俺の長い組み込み経験からのアドバイス。
1.レイヤを定める。下位レイヤは上位レイヤのデータ
構造を知らなくてもやり取り出来るようにする。バイ
ナリ←→プログラムデータの変換部分との間にユーティ
リティ的なレイヤがあると便利。
2.最初に「バイト長」とか入れない。これをやられる
と送信側でデータが揃わないと送出開始出来なくなる。
仕事でこういうプロトコル決めてる奴を見ると殺意が
芽生える。
3.1や2を実現するために、たとえバイナリでもエス
ケープ文字を用意する。俺が良く使うのは SLIP のエ
スケープ(昔仕事で使ったから)。下位レイヤでデー
タやコマンドの開始/終了などを用意する。読む側の
下位レイヤで「開始」が来たら読んでる途中のものを
全部破棄して例外を投げるように(初期状態 read で
catch するように)すると、通信相手のバグその他で
変な状態に陥っても元に戻ることが保証出来る。