小项目快结束了...有个问题【类似于QQ的项目!】
做了个类似于QQ的,之前遇到好多问题都是序列化那边报错...我想了想 应该是接受的时候没有接完整 它才提示我错误的...
之后 我read的时候 加大了字节长度....可以了,我本地测试 所有的问题都没了
可把客户端给别人....就不行了, 想请大家帮忙 看看我这个分割 消息的方式 有什么不对么????
这个项目 要完了, 求大家帮忙看下, 我太苦恼了!!!
发送消息:
//str是一条消息.....【序列化而成的字符串】
stream.Write(Encoding.Unicode.GetBytes(str), 0, Encoding.Unicode.GetBytes(str).Length);
stream.Write(Encoding.Unicode.GetBytes("|"), 0, Encoding.Unicode.GetBytes("|").Length);
接受消息 + 切割消息:
string data = null; //最后要切割
while (true)
{
byte[] buffer = new byte[5000]; //我加大这个5000的数值之后 接起来有点卡,但之前2000的话 消息接不完整
int bytesRec = stream.Read(buffer, 0, buffer.Length);
//int bytesRec = handler.Receive(bytes);
data += Encoding.Unicode.GetString(buffer, 0, bytesRec);
if (data.IndexOf("|") > -1)//这个代表接受到指定的消息,也是自己定义即可
{
break;
}
}
string[] t = data.Split('|'); //把消息切割成多份“命令”然后进行消息处理,把一条条完整消息切割下来放在t数组里面....然后数组元素一个个提取【反序列化之后】再处理!!!!!!
总体大概就是这样
在本地吧。。。都已经测试 没有半点问题了.... 可把客户端给别人用的时候接受了一条消息, 第二条没有接受完整就进入了反序列化...所以它提示我,反序列化格式不正确....