回答編集履歴
2
更に追記
answer
CHANGED
@@ -17,3 +17,13 @@
|
|
17
17
|
---
|
18
18
|
【追記】
|
19
19
|
回答を書いている間に質問の内容が書かれてました。フライングしてしまった。すいません。
|
20
|
+
|
21
|
+
---
|
22
|
+
【質問を読み直して】
|
23
|
+
ソースもざっとみました。バイナリー・データを送っているので、先に書いた「2. 特殊コード」方式を使うのは難しいですね。かと言って「1. タイムアウト」もタイマの制御が必要になるのでやはり難しいてす。
|
24
|
+
|
25
|
+
バイナリー・データを送らないように改造するのが、恐らく簡単です。
|
26
|
+
今はint型を2バイトでそのまま送っていますが、例えば4ビットづつを8ビットへ拡張して4バイトで送ることが考えられます。4ビットの値が10未満ならオフセット0x30を加え、10以上ならオフセット0x41を加えるとASCIIコードでの16進数表現になります。そして、それを受信側でデコードすることがかのうです。
|
27
|
+
このような工夫をして送受信することで、例えばベーシック手順のSYNコードなどをペイロード中に発生しないようにします。
|
28
|
+
|
29
|
+
そして、送信側はパケット先頭にSYNコードを付加して送り、受信側はSYNコードを受信できるまでデータを1バイトづつ破棄することが考えられます。
|
1
追記
answer
CHANGED
@@ -12,4 +12,8 @@
|
|
12
12
|
2. 特殊コード
|
13
13
|
ペイロード内に記録しないコードを決めます。バケット先頭にそのようなコードの一つを割り当てます。
|
14
14
|
例えば、よく使われる[ベーシック手順](http://software-engineering-lab.com/network/basic.html)はこの方式です。
|
15
|
-
この方式はタイムアウトに頼らない点で優れています。ペイロードに使えない値を伝送できるようにするため、それなりの工夫(エスケープするなど)で高速化することもできます。
|
15
|
+
この方式はタイムアウトに頼らない点で優れています。ペイロードに使えない値を伝送できるようにするため、それなりの工夫(エスケープするなど)で高速化することもできます。
|
16
|
+
|
17
|
+
---
|
18
|
+
【追記】
|
19
|
+
回答を書いている間に質問の内容が書かれてました。フライングしてしまった。すいません。
|