APP?

发布日期:2023-06-26 12:45:17   浏览量 :566
发布日期:2023-06-26 12:45:17  
566



写服务端(整体设计思路):

服务端主要实现一下功能:

1、处理客户端登陆请求。

2、处理客户端设置请求(改密码、设置自身昵称、设置留言等)。

3、处理客户端发送信息(包括文字、图片、表情)请求。

4、处理客户端发送文件请求(包括发送离线文件请求)。

5、处理客户端聊天记录下载请求。

6、处理客户端查询用户列表、加好友等请求。

以上各个功能点围绕“网络通信”和“数据库维护”两个基本点展开:

任务处理逻辑:

使用windows完成端口+线程池技术实现网络通信,可以使用现成的网络库,当新的请求报文到达时,实例化对应的任务类,并投递到一个任务队列中。
该任务队列使用信号量内核对象来维护,当有新的任务时,从线程池中激活一个线程去执行该任务。

业务逻辑细则:

1、当客户端接入,但超过n分钟未登陆,服务端主动断掉该客户端,已节约服务端资源。

2、当客户端登陆,在数据库中记录该用户的IP地址以及端口号,并记录登陆状态,表明该用户已经登陆,对于已经登陆的客户端,不允许重复登陆。
当客户端注销、主动挂断、被动挂断等事件发生时,清除该用户的登陆状态。

3、当客户端发送消息传送请求时,先判断目的用户是否在线,如果在线,直接将消息转发到目标用户所在客户端IP/端口。
否则,存入数据库,当目标用户登录时,择时进行推送。

4、当客户端发送文件请求时,如果双方均在线,则服务器首先协调双方客户端进行直连,如果直连成功,发送方直接给接收方发送文件,服务端不介入数据转发。
如果直连不成功,或者接收方不在线,服务器要求客户端首先传送文件验证信息,目的是对要发送的目标文件进行查询,如果服务端已经存在相同的文件(文件名相同、大小相同、MD5校验相同),则通知客户端无需上传,同时在数据库对已存在的文件引用计数+1。
如果服务端不存在该文件,则通知客户端发送文件并接收。

5、收到客户端下载聊天记录请求时,服务端从数据库中查询改用户的聊天记录,并分页传送给客户端。

写客户端:

任何报文请求遵循下列步骤:

发送请求报文---等待服务端处理结果---对结果进行处理。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
云计算支持 反馈 枢纽云管理
回到顶部