我目前正在研究异步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);
通常情况下,一切正常 - 但只要一条消息以美元符号($)开头,我就会看到这个字符。
我正在寻找很长时间,但我找不到任何解决方案......
答案 0 :(得分:2)
Receive
可以在套接字收到任何数据时完成 - 不一定是整个“消息”。您必须缓冲接收的数据,直到收到整条消息(在协议中定义)。