美元($)在字符串开头签字

时间:2011-10-28 07:55:27

标签: c# asynchronous

我目前正在研究异步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 个答案:

答案 0 :(得分:2)

Receive可以在套接字收到任何数据时完成 - 不一定是整个“消息”。您必须缓冲接收的数据,直到收到整条消息(在协议中定义)。