| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 724 人关注过本帖
标题:小项目快结束了...有个问题【类似于QQ的项目!】
只看楼主 加入收藏
hxz1234
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-7-10
收藏
 问题点数:0 回复次数:1 
小项目快结束了...有个问题【类似于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数组里面....然后数组元素一个个提取【反序列化之后】再处理!!!!!!




总体大概就是这样
在本地吧。。。都已经测试 没有半点问题了.... 可把客户端给别人用的时候接受了一条消息, 第二条没有接受完整就进入了反序列化...所以它提示我,反序列化格式不正确....

搜索更多相关主题的帖子: 字符串 
2012-07-10 21:18
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:0 
显然只有当data中包含了“|”字符的时候,就会跳出while循环,所以你要先确认收到的正常数据中,是否包含有“|”字符,这样会导致提前跳出while循环,使得序列化的字符串并未被接收完整,从而反序列化的时候报错。
2012-07-23 16:55
快速回复:小项目快结束了...有个问题【类似于QQ的项目!】
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030701 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved