关于MYQQ的消息设计问题, 打扰~~~

elmnd 2009-10-21 02:08:56
我要做一个局域网聊天工具,现在问题在于消息的设计问题, 具体有下面的需求:
1。客户端发送消息到服务端, 验证登陆是否成功。
2。对应的, 服务器对客户端发送消息, 返回是否成功登陆的消息。
3。客户端发送消息到服务器, 要求在线用户列表。
4。服务器返回在线列表消息。
//////////////////////////////////////


//服务器接收这种“大”信息(反序列化成为这个类型)
msgClientToServer
FLAG: 0, 1分别表示登陆信息还是列表信息
byte[] msg; //对消息的内容序列化

//客户端接收这种“大”信息
msgServerToClient
FLAG: 0, 1分别表示登陆信息还是列表信息
byte[] msg; //对消息的内容序列化


/////////////////////////////////////////////////////////
具体的实现就是根据标志位反序列化成为不同的类型(一收到数据后就先反序列化“大消息”一次, 再反序列化里面的“小”消息, 一共就2次了)。不过, 我总是觉得这样设计的话, 非常冗余, 而且感觉有BUG, 有哪位大大提供一个好方案吗?
...全文
102 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhgroup 2009-10-21
  • 打赏
  • 举报
回复
这个你可以搜索一下lumaqq,是用JAVA写的
另外对于消息的设计,消息就是命令,每个命令都有唯一值,然后在服务器端和客户端针对不同的命令进行解析,然后再进行相应处理
对于消息内容,如下供参考:
包头长度、命令、分块序号、总块数、包内容(可以将对象序列化后发送)
happyboyxq1985 2009-10-21
  • 打赏
  • 举报
回复
用sortlist存储比较好吧,这样方便排序。
处理最好用线程。
ximi82878 2009-10-21
  • 打赏
  • 举报
回复
应该是用线程做好吧。我觉得数据类型应该用泛型吧,里面放上每个在线对象,就是不知道量大的时候会不会有什么弊端。支持下,也学习下~~~
Flyingdragon168 2009-10-21
  • 打赏
  • 举报
回复
没有C#的代码,只有VB的代码了。顶一下吧。
netstray 2009-10-21
  • 打赏
  • 举报
回复
学习
SimpleM 2009-10-21
  • 打赏
  • 举报
回复
我想问一下,你是准备用计时器之类的东西做,还是用多线程之类的东西?
elmnd 2009-10-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 flyingdragon168 的回复:]
没有C#的代码,只有VB的代码了。顶一下吧。
[/Quote]
VB也行, 我参考一下怎样设计消息包而已啊
elmnd 2009-10-21
  • 打赏
  • 举报
回复
多线程
不过, 有区别吗?
elmnd 2009-10-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fengling2001 的回复:]
http://blog.csdn.net/Super_Huai/archive/2008/12/30/3641990.aspx
[/Quote]
没有源代码啊~~~
再说, 我只是要消息的设计方案而已, 别的都先不管
elmnd 2009-10-21
  • 打赏
  • 举报
回复
不好意思, 还有个问题。 关于传输在线用户列表(在线用户的IP,端口, 用户名等), 用哪种类型存放好呢?是数据结构类型DICTIONARY, COLLECTION, 还是整个LISTVIEW的ITEMS传过去好呢?

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧