少なくとも 1 つは PC ではない 2 つのデバイス間で、テキスト ベースのプロトコルを設計する必要があります。そのため、ライブラリ、正規表現、その他の派手なツールに頼ることはできません。BASIC
通常、これらの言語は(if、ループ、toString、fromString、固定サイズの文字列) が提供できるもの以上のものを提供しません。
メッセージは TCP/IP 経由で送信されます。テキストのエンコーディングは ASCII です。
プロトコルでは、いつでもメッセージを送信できます (1 つのパートナーが 5 つのメッセージを続けて送信できます)。
私がこれまでに理解した問題:
- 文字のストリームを複数のメッセージに分割する方法が必要です。
- メッセージ内の一部のフィールドは長さが異なる可能性があるため、メッセージをフィールドに分割する方法も必要です。
- メッセージタイプフィールドを各メッセージの最初のフィールドとして送信することで解決したいいくつかのメッセージタイプをサポートする必要があります。
これまでの私の計画:
- '\0' のようなメッセージ区切り文字を導入して 1 に対処します。
- 2 に対処するために、'\t' のようなフィールド区切り文字を導入します。
- プロトコル タイプをテキストまたは整数として最初のフィールドとして送信します。
サンプル:
42\t123.456\tsome string\t4\042\t12.456\tsome other string\t5\0
次のように解釈されます。
[42 , 123.456 , "some string" , 4], [42 , 12.456 , "some other string" , 5]
私が見る問題:
- '\t' または '\0' を含む文字列など、区切り文字を「エスケープ」する方法は? 区切り文字を許可しない (おそらく 128 文字以上から選択する) ?
このプロトコルについてどう思いますか? 良い代替手段はありますか?プログラミング機能は非常に限られていることを忘れないでください。