聊天工具的开发(1)

这一段时间公司的项目不是特别的紧,无事之余我突然有一种想开发一个聊天工具的

想法,于是就一步一步做了起来。

         首先是对于目前网络上经常使用到的聊天工具进行了分析,对于我来说最熟

悉的就是QQ。我对使用QQ的操作以及QQ的执行过程进行了仔细的观察,当然观察的内

容也只是和我想做的部分相关,之余QQ游戏之类没有做详细的调研。我想对于QQ这样

一个聊天工具平台而言,主要的架构几乎肯定是C/S的结构。腾讯公司有自己的QQ服务

器,每个QQ用户具有QQ客户端。对于一个普通用户而言,使用QQ的过程大家都是十分

熟悉的,肯定是先要登录QQ网站申请QQ账号,然后打开QQ客户端输入ID号与PassWord

登录QQ服务器,然后与好友聊天或在自己的群中聊天。

         我在做我的聊天工具的过程中一直在考虑几个问题:

         1客户端与服务器究竟是TCP连接,还是UDP连接?对于每个客户端而言,登

陆时服务器需要做那些工作?

          我的聊天工具采用了TCP连接,我在服务器中创建了一个监听套接字,监听

客户端发送的连接请求。当有一个客户端准备上线时将向服务器发送连接请求,监听

套接字将创建data socket与此客户端进行对话。然后用户输入ID和PassWord进行登录

,客户端将把ID和PassWord发送给服务器,服务器接收到登录信息后将查询用户信息

数据库,检查登录信息是否正确。如果登录信息有误则服务器向客户端发送出错提示

,如果正确会进一步检索数据库,找到此客户的好友并发送好友信息至客户端。

           也就是说,服务器会对客户端的登录信息进行数据库检查,会将客户端的

好友信息发送给客户端。前几天看了别人对于OICQ的评述,有人认为在客户端登录时

,对于用户登录信息的CHECK首先是在客户端完成的,也就是说如果你过去在某台电脑

上用过OICQ,那么的你上次输入的密码将被保存在本地,当然密码是加密的,当你再

次在这台电脑上登录时,客户端会首先将你输入的信息与本地保存的信息进行比较,

如果正确就算是登陆成功,如果不正确会与服务器连接,服务器会去查询数据库。我

觉得这个登录的采取方案最大的好处就是减轻了服务器的压力,服务器少查询了一次

数据库。另外,我的聊天工具的服务器会在客户端登陆成功以后,将客户的好友信息

放送给客户端。这里的好友信息包括好友的id、nickname、好友目前的ip、好友的状

态(在线或是离线或是隐身),但是我观察了QQ当你的网络处于离线状态时,你登录

QQ,虽然无法登陆但是却能显示出你的好友,当然他们都是离线的,这说明好友的信

息部分是存在本地机器中(前提是以前你至少在这一台电脑上用过一次QQ)。这种实

现机制的好处也是减轻了服务器的负担,同时也减轻了客户端的负担,每一次用户成

功登录以后,服务器不在需要向客户端传递其好友的信息,那么好友的目前状态信息

由谁来通知呢?我想最好的办法就是由好友自己来传递。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值