回答編集履歴
2
更に追記
test
CHANGED
@@ -37,3 +37,23 @@
|
|
37
37
|
回答を書いている間に質問の内容が書かれてました。フライングしてしまった。すいません。
|
38
38
|
|
39
39
|
|
40
|
+
|
41
|
+
---
|
42
|
+
|
43
|
+
【質問を読み直して】
|
44
|
+
|
45
|
+
ソースもざっとみました。バイナリー・データを送っているので、先に書いた「2. 特殊コード」方式を使うのは難しいですね。かと言って「1. タイムアウト」もタイマの制御が必要になるのでやはり難しいてす。
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
バイナリー・データを送らないように改造するのが、恐らく簡単です。
|
50
|
+
|
51
|
+
今はint型を2バイトでそのまま送っていますが、例えば4ビットづつを8ビットへ拡張して4バイトで送ることが考えられます。4ビットの値が10未満ならオフセット0x30を加え、10以上ならオフセット0x41を加えるとASCIIコードでの16進数表現になります。そして、それを受信側でデコードすることがかのうです。
|
52
|
+
|
53
|
+
このような工夫をして送受信することで、例えばベーシック手順のSYNコードなどをペイロード中に発生しないようにします。
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
そして、送信側はパケット先頭にSYNコードを付加して送り、受信側はSYNコードを受信できるまでデータを1バイトづつ破棄することが考えられます。
|
58
|
+
|
59
|
+
|
1
追記
test
CHANGED
@@ -27,3 +27,13 @@
|
|
27
27
|
例えば、よく使われる[ベーシック手順](http://software-engineering-lab.com/network/basic.html)はこの方式です。
|
28
28
|
|
29
29
|
この方式はタイムアウトに頼らない点で優れています。ペイロードに使えない値を伝送できるようにするため、それなりの工夫(エスケープするなど)で高速化することもできます。
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
---
|
34
|
+
|
35
|
+
【追記】
|
36
|
+
|
37
|
+
回答を書いている間に質問の内容が書かれてました。フライングしてしまった。すいません。
|
38
|
+
|
39
|
+
|