像QQ那样的程序,是怎样检测客户端是否在线的?由服务器向每个客户端轮询?
怎样知道好友上下线的?是由服务器检测到再发给客户端?
客户端意外终止,其它好友是怎么知道你下线了的,是服务器告诉他们的,还是客户端一个一个好友的轮询检测?
这些都涉及到效率问题,之前没写过,往有经验的指导指导,说详细点.
怎样知道好友上下线的?是由服务器检测到再发给客户端?
客户端意外终止,其它好友是怎么知道你下线了的,是服务器告诉他们的,还是客户端一个一个好友的轮询检测?
这些都涉及到效率问题,之前没写过,往有经验的指导指导,说详细点.
解决方案 »
- 如何在网页上调用com的接口?
- MFC listctrl 背景透明,选中行的问题(100分求助)
- 先祝大家新年快乐!我想在状态栏实现一个动态的效果,请问怎么实现啊?
- 要做一个小程序,至今未能解决,高分求助!
- 如何用vc(或者vb) 做刻录光盘
- _beginthead函数无法启动线程,无显示
- 谁能告诉我,怎样修改ie上下文菜单,并对菜单消息进行处理??
- 怎样将几个中文字符串按拼音排序
- VS解决方案资源管理器里文件前面红点是啥意思?
- 各位C++高手,请看这,如解得,300分,
- 基于TCP实现多线程通信
- VC中使用webbrowser,我想拦截下载对话框,程序指定默认下载路径,取出文件名,做过的帮忙看看啊,分不多,50分敬上,勿怪,先谢谢大家了
还有一个问题,每个客户的好友怎样存储在数据库中?要为每个客户都增加一个好友的表吗?因为好友是多个的,不像年龄,性别,帐号都是唯一的.建立数据表还是个难题啊..
2 他的好友列表查询返回很快,可能有专门的一个好友列表的表单。通过ID获取其好友列表。不然千万用户这么大的查询量时间短不了。
服务器上应该还是会维护一些基本信息
P2P可以用来传输文件等比较消耗资源的应用..
从腾讯的面试题就知道了,
服务器端的性能优化题是必考的
http://topic.csdn.net/u/20090704/15/5ceebb7e-e217-4f01-8519-3cb6ba95777a.html?47522
几千万个用户都在聊天的话,就算是文字,通过服务器中转,消耗资源也是够大的,想想就知道,每人发一千字内容,一千万个人发,多大?
文字聊天时,主要先通过服务器"查询"下对方的IP(或位置),再返回给发送的用户,然后,就直接向接收方发信息了,在两人聊过两遍后,也不通过服务器查询了(已经有了)当然,可能也不全是这样,这只是对于普通的QQ用户,对于会员之类的,它要把你的聊天记聊保到服务器,这当然整个聊天内容要传到服务器了,这样,是否再把内容传给接收方就不得而知了(要知道答案,去问腾讯的开发人员吧)
是仿照MSN的(VB.Net)。
另外 C - S - S -C。 也要考虑P2P情况。
语音了 视频了 全都走SERVER哪是不可能的。
http://download.csdn.net/source/1352218
参考在下这两个东西,做得挺好!
还有一个
服务器和客户端有心跳,服务器每隔10秒发送一个包询问客户端的状态,规定时间内无应答,则认为掉线
怎样知道好友上下线的?是由服务器检测到再发给客户端?
你的好友A上线--服务器从数据库中取出好友A的好友列表(或登录时已经由数据库加载到内存)--服务器将该上线消息广播给A列表中登陆的好友--你得到好友在线消息(不是你与好友直接通信的,都是服务器处理的)
客户端意外终止,其它好友是怎么知道你下线了的,是服务器告诉他们的,还是客户端一个一个好友的轮询检测?
客户端B下线--服务器心跳检测到B下线状态--服务器从数据库中获取B的好友列表(或登录时已经由数据库加载到内存)--服务器将下线消息广播给B列表中登陆的好友--你得到好友的下线消息
一般都是设置心跳的。服务端主动心跳。肯定不能客户端发心跳。如果客户端死机了。那这个用户还卡在那里了。
好友上下线都是通知。比如你上线,服务端1知道了。他读取你的好友信息。通过hash发给其他服务端。其他服务端检测到你的某位好友在线。就给他发一个你上线的通知。另外回一个该好友在线的消息给服务端1,然后服务器1再通知你的好友哪些在线。所以在我们看来。我们先登录上去了。好友先都是灰的。过会就正常显示了。也就是说服务端1并不知道你的好友在不在线。他也是去其他服务端查询。 本身因为数据巨大,也不可以一个服务端搞定。客户端意外终止,他所在服务端通过心跳包是可以得知的。知道了不就好办了。老办法。hash通知其他服务端你的好友你下线了。
一般是一个服务端服务一个hash段.希望可以帮到你。 多给点分才是真的。