操作方法
写服务端(整体设计思路): 服务端主要实现一下功能: 1、处理客户端登陆请求; 2、处理客户端设置请求(改密码、设置自身昵称、设置留言等); 3、处理客户端发送信息(包括文字、图片、表情)请求; 4、处理客户端发送文件请求(包括发送离线文件请求); 5、处理客户端聊天记录下载请求; 6、处理客户端查询用户列表、加好友等请求; 以上各个功能点围绕“网络通信”和“数据库维护”两个基本点展开: 任务处理逻辑: 使用windows完成端口+线程池技术实现网络通信,可以使用现成的网络库,当新的请求报文到达时,实例化对应的任务类,并投递到一个任务队列中;该任务队列使用信号量内核对象来维护,当有新的任务时,从线程池中激活一个线程去执行该任务。 业务逻辑细则: 1、当客户端接入,但超过n分钟未登陆,服务端主动断掉该客户端,已节约服务端资源; 2、当客户端登陆,在数据库中记录该用户的IP地址以及端口号,并记录登陆状态,表明该用户已经登陆,对于已经登陆的客户端,不允许重复登陆。当客户端注销、主动挂断、被动挂断等事件发生时,清除该用户的登陆状态。 3、当客户端发送消息传送请求时,先判断目的用户是否在线,如果在线,直接将消息转发到目标用户所在客户端IP/端口;否则,存入数据库,当目标用户登录时,择时进行推送。 4、当客户端发送文件请求时,如果双方均在线,则服务器首先协调双方客户端进行直连,如果直连成功,发送方直接给接收方发送文件,服务端不介入数据转发;如果直连不成功,或者接收方不在线,服务器要求客户端首先传送文件验证信息,目的是对要发送的目标文件进行查询,如果服务端已经存在相同的文件(文件名相同、大小相同、MD5校验相同),则通知客户端无需上传,同时在数据库对已存在的文件引用计数+1;如果服务端不存在该文件,则通知客户端发送文件并接收。 5、收到客户端下载聊天记录请求时,服务端从数据库中查询改用户的聊天记录,并分页传送给客户端。
写客户端: 任何报文请求遵循下列步骤: 发送请求报文---等待服务端处理结果---对结果进行处理。