byte[] buffer = new byte[1024 * 1024 * 2];
int length = socket.Receive(buffer);
if (length == 0)
{
break;
}
if (buffer[0] == 0)
{
string txt = Encoding.UTF8.GetString(buffer, 1, length-1);
}
byte[] buffer = Encoding.UTF8.GetBytes(txt);//txt为json序列化后的
List<byte> list = new List<byte>();
list.Add(0);
list.AddRange(buffer);
byte[] newBuffer = list.ToArray();
socket.Send(newBuffer);
“Newtonsoft.Json.JsonReaderException”类型的未经处理的异常在 Newtonsoft.Json.dll 中发生
Additional text encountered after finished reading JSON content: . Path '', line 1, position 177.
string txt = Encoding.UTF8.GetString(buffer, 1, length-1);
后面多一个字符,这个字符像正方形的左上角多出的字符字符类似于这个样 ┏
list.Add(0);
这里add的(byte)0 不就是你server收到后多出来的么.
string txt = Encoding.UTF8.GetString(buffer, 1, length-1);
我这里接收的消息内容是从1开始,接收length-1个字符啊,本来接收到了length个字符去掉第一个,不就是length-1
@小草上飞飞: tcp 沾包了吧,吧发的和收到的byte和length都打印一下
前4个字节可以是后面byte的length,读取4字节的长度后在根据长度读取后续的data
我在最后做了判断,接收解析到的字符串,最后一个若不是]
或}
,那么就不要]
或}
后面的字符了。用Split
做分割。