Знак доллара ($) в начале строки - PullRequest
0 голосов
/ 28 октября 2011

В настоящее время я работаю над асинхронным TCP-клиентом. Я могу отправлять и получать сообщения. Однако следующий код сводит меня с ума на данный момент:

int rx = theSockId.thisSocket.EndReceive(asyn);
char[] rcvd = new char[rx + 1];
System.Text.Decoder d = System.Text.Encoding.ASCII.GetDecoder();
int charLen = d.GetChars(theSockId.dataBuffer, 0, rx, rcvd, 0);
System.String szData = new System.String(rcvd);

Обычно все работает нормально, но как только сообщение начинается со знака доллара ($), я вижу только этот символ.

Я долго искал, но не мог найти решение ....

1 Ответ

2 голосов
/ 28 октября 2011

Receive может завершаться, когда в сокет поступают какие-либо данные - не обязательно целое «сообщение».Вы должны буферизовать полученные данные до тех пор, пока не будет получено все сообщение (как определено в вашем протоколе).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...