admin管理员组文章数量:1531793
2024年3月23日发(作者:)
办公QQ通讯系统技术文档(UDP版)
一、总体功能介绍:
由于在之前通讯过程中,发现WCF通讯方式有一定局限性,不能很好的跨越Internet,
与手机端通讯只能采用调用服务的方式(类似于webservice,不能使用WCF双工通信),无法
实现与手机端双向通信。因此开发了一套UDP通讯方式的办公通讯系统。
但是基本的UDP通讯有丢包现象,并且在网络拥堵时先后顺序可以混乱,Internet网络
中通讯时,UDP数据包超过548字节会引起错误。因此在参考了飞鸽传输等局域网通讯程序
后,重新封装了UDP通讯类,增加了数据包自动重复发送与确认功能,防止丢包;并增加
了包序号,防止UDP数据包乱序;增加了分包发送功能,在数据包大于548字节时,分成
若干子数据包发送,防止数据包过大引起的异常。
对象在发送端首先转换为Json串,然后进行数据压缩,以便减少数据量,再发送给UDP
服务器,服务器根据用户名查找指定用户的ip与端口号,然后转发消息给目标用户。目标
用户在收到消息后,首先解压数据,获得Json串,然后根据通讯操作命令,获取对应的对
象实例,完成一次通讯过程。
系统的界面高度模仿腾讯QQ,并在其基础上做相应调整,以便于适应企业办公聊天通
讯使用。
二、UDP通讯实现:
(1)udplib类库
本系统的全部udp通讯类与数据模型封装在一个类库项目中,便于客户端与服务器端统一
使用统一套通讯程序来通讯。
(2)UDP通讯类 ead
在TCP/IP的UDP协议基础上,重新封装了UDP通讯类,增加了数据包自动重复发送与
确认功能,防止丢包;并增加了包序号,防止UDP数据包乱序;增加了分包发送功能,在
数据包大于548字节时,分成若干子数据包发送,防止数据包过大引起的异常。
(3)UDP传输类ns
以UDPThread作为基础传输协议,在此基础上实现对象在发送端首先转换为Json串,
然后进行数据压缩,以便减少数据量,再发送给UDP服务器,服务器根据用户名查找指定
用户的ip与端口号,然后转发消息给目标用户。目标用户在收到消息后,首先解压数据,
获得Json串,然后根据通讯操作命令,获取对应的对象实例,完成一次通讯过程。
(4)客户端通讯类:Communication
以UDPTrans类为基础,封装客户端对服务器的基本调用方法:
1、用户登录方法
public string Login(UserModel user)
2、根据用户id获取用户对象
public List
3、根据用户账号获取用户对象
public List
4、获取全部用户对象列表
public List
5、由用户账号获取好友分组
public List
6、由用户账号,好友分组名称获取好友分组下的好友列表
public List
7、获取系统客服列表
public List
8、获取公司部门列表
public List
9、获取最近联系人列表
public List
10、由用户账号获取其QQ群列表
public List
11、发送聊天信息对象
public void sendSay(ChatMsgModel msg)
(5)服务器端通讯逻辑处理类:
1、处理客户端登录请求
public static void login(SPackage pack, UdpTrans trans, IPEndPoint remoteip)
2、处理客户端根据用户id获取用户对象请求
public static void getUserListByUserId(SPackage pack, UdpTrans trans, IPEndPoint remoteip)
3、处理客户端根据用户账号获取用户对象请求
public static void getUserListByName(SPackage pack, UdpTrans trans, IPEndPoint remoteip)
4、处理客户端获取全部用户对象列表请求
public static void getAllUsers(SPackage pack, UdpTrans trans, IPEndPoint remoteip)
5、处理客户端获取分组好友请求
public static void getGroupFriends(SPackage pack, UdpTrans trans, IPEndPoint remoteip)
6、处理客户端获取系统客服请求
public static void getCustomerServer(SPackage pack, UdpTrans trans, IPEndPoint remoteip)
7、处理客户端获取好友分组请求
public static void getUserGroup(SPackage pack, UdpTrans trans, IPEndPoint remoteip)
8、处理客户端获取部门列表请求
public static void getPartList(SPackage sPackage, UdpTrans trans, IPEndPoint remoteip)
版权声明:本文标题:udp增强协议实现QQ网络通讯的设计 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1711198000a304616.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论