回答編集履歴
4
ループの終了条件について追加
test
CHANGED
@@ -6,3 +6,12 @@
|
|
6
6
|
もまずいですね。先頭1バイトしか変換していない。
|
7
7
|
|
8
8
|
いっそのこと SendAndRecieve の戻り値は string にして、return enc.GetStriing(ms.ToAray(), 0, ms.Length - 1); としたほうがよさそう。
|
9
|
+
|
10
|
+
while (netstream.DataAvailable || resBytes[resSize - 1] != '\n');
|
11
|
+
も、まずいです。
|
12
|
+
メッセージが長くなり、複数のパケットに分割されると、すべてのデータを受信する前に DataAvailable プロパティが False になり、ループを抜けてしまいます。
|
13
|
+
while (resSize > 0 && resBytes[resSize - 1] != '\n');
|
14
|
+
として、デリミタを受信するまでループしてください。(通信仕様がわからないのでデリミタが '\n' でいいかは不明)
|
15
|
+
|
16
|
+
|
17
|
+
|
3
最後の1バイトを除く
test
CHANGED
@@ -5,4 +5,4 @@
|
|
5
5
|
string b = Encoding.ASCII.GetString(byteRecieveMessage, 0, 1);
|
6
6
|
もまずいですね。先頭1バイトしか変換していない。
|
7
7
|
|
8
|
-
いっそのこと SendAndRecieve の戻り値は string にして、return enc.GetStriing(ms.ToAray()); としたほうがよさそう。
|
8
|
+
いっそのこと SendAndRecieve の戻り値は string にして、return enc.GetStriing(ms.ToAray(), 0, ms.Length - 1); としたほうがよさそう。
|
2
enc → enc.GetString
test
CHANGED
@@ -5,4 +5,4 @@
|
|
5
5
|
string b = Encoding.ASCII.GetString(byteRecieveMessage, 0, 1);
|
6
6
|
もまずいですね。先頭1バイトしか変換していない。
|
7
7
|
|
8
|
-
いっそのこと SendAndRecieve の戻り値は string にして、return enc(ms.ToAray()); としたほうがよさそう。
|
8
|
+
いっそのこと SendAndRecieve の戻り値は string にして、return enc.GetStriing(ms.ToAray()); としたほうがよさそう。
|
1
他にもまずそうな点があった
test
CHANGED
@@ -2,3 +2,7 @@
|
|
2
2
|
せっかく受信した内容を MemoryStream に書き込んでいるのに、return resBytes と、最後に受信したバッファの内容を返しています。
|
3
3
|
ここは、return ms.ToArray(); が正しいのでは?
|
4
4
|
|
5
|
+
string b = Encoding.ASCII.GetString(byteRecieveMessage, 0, 1);
|
6
|
+
もまずいですね。先頭1バイトしか変換していない。
|
7
|
+
|
8
|
+
いっそのこと SendAndRecieve の戻り値は string にして、return enc(ms.ToAray()); としたほうがよさそう。
|