使LumaQQ.NET支持接收长消息

文/lersh  出处/博客园

        之前的文章里说明了怎么让LumaQQ.NET发送长消息,这里我们看看怎么让LumaQQ.NET支持接收长消息。

        其实QQ的服务器在发送长消息时,是将其拆分成几个短的消息来发送的,这点在上一篇发送长消息时,大家已经能看出来了。那么怎么将几个短消息合并成一个长消息呢。

        这里主要是用到了NormalIM的TotalFragments和FragmentSequence两个属性,FragmentSequence表示这个是第几个分片,基于0的index,TotalFragments表示一共有几个分片。

        由于收到消息时,不一定是按照顺序接收到的(网络延迟等原因),因此我们定一个Dictionary来管理分片。



引用:
private static Dictionary<int, Dictionary<int, byte[]>> NormalLongTextDict = new Dictionary<int, Dictionary<int, byte[]>>();

        然后在接收到消息的事件里,进行判断和组装


 附件: 您所在的用户组无法下载或查看附件

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [Visual Studio.NET] 的这些文章也感兴趣:

2008年中国.NET技术应用趋势分析
在中文版VS 08中安装MVC
DataGridWeb控件深度历险(3)part3
Visual Studio 2010和.NET Framework 4.0
lucene.net 2.0 中文分词后语法高亮问题
利用Geneva开发SOA的安全模型
使用.net3.5的缓存池和SocketAsyncEventArgs类创建socket服务器
Visual Studio 2008 SDK 1.1 Beta 发布
Martin Fowler:ALT.NET对微软社区的成长很重要
.NET和动态语言