如果采用的是C/S模式的,并且提供用户注册功能,我认为流程大致如下:
首先,服务器端:侦听客户端的连接请求,并利用不同的代号区分连接的类型,如01代表注册用户,02代表用户上线,03发言,04下线等等,至于判断用户是否在线可以再服务器端的数据库中设置一个字段来保存,用户上线,update其值为1,用户下线,update其值为0.
其次就是客户端,客户端连接上服务器之后,发送信息,但是头部要利用01、02、03、04等类型区分开来。(如果想准确的检测用户的在线状态,可以每隔1分钟,对服务器端进行一次连接,确认还在线),那么就可以实现一般功能。问题是,现在我想让A用户和B用户进行聊天,到底该利用哪种协议呢?
能不能不通过服务器进行(目的是减轻服务器的负担)。听说腾讯的QQ在登陆服务器的时候利用的是TCP连接,真正的两个人聊天的时候利用的是udp,这是怎么回事?
这方面小弟不是太精通,还请懂这方面的给个解释,谢过了先。
首先,服务器端:侦听客户端的连接请求,并利用不同的代号区分连接的类型,如01代表注册用户,02代表用户上线,03发言,04下线等等,至于判断用户是否在线可以再服务器端的数据库中设置一个字段来保存,用户上线,update其值为1,用户下线,update其值为0.
其次就是客户端,客户端连接上服务器之后,发送信息,但是头部要利用01、02、03、04等类型区分开来。(如果想准确的检测用户的在线状态,可以每隔1分钟,对服务器端进行一次连接,确认还在线),那么就可以实现一般功能。问题是,现在我想让A用户和B用户进行聊天,到底该利用哪种协议呢?
能不能不通过服务器进行(目的是减轻服务器的负担)。听说腾讯的QQ在登陆服务器的时候利用的是TCP连接,真正的两个人聊天的时候利用的是udp,这是怎么回事?
这方面小弟不是太精通,还请懂这方面的给个解释,谢过了先。
期于的东西 都是一些数据库的东西了.. 用C#做开发的话很简单..socket类里面封装了挺多不好理解的方法.
所以你研究研究差不多少就能弄出来的.
消息传送用udp,端口是4000(发送)8000(接收),其他功能不知道用什么
呵呵 肤浅 请先鄙视后给分!
QQ是怎么通信的?
http://user.qzone.qq.com/398158328/infocenter?ptlang=2052http://www.cnblogs.com/hjf1223/archive/2008/03/11/1101017.html
http://user.qzone.qq.com/398158328/infocenter?ptlang=2052
http://www.cnblogs.com/hjf1223/archive/2008/03/11/1101017.html
即客户端一上线的时候,就直接把自己的ip和端口发给服务器,服务器再转发给所有线上的用户,那么用户交流就可以直接通过udp了,不用通过服务器的转发了。
假设两个客户机在内网,内网的套接字都为 192.168.0.23:10011 (这种套接字是可能存在的)
那么这两个客户机如何通过udp通讯?
他们这是不是把只要在线的用户都加入到一个A类的虚拟局域网中间去,是这个技术吗?
如果是的,那么是如何实现的,如果不是,像nat穿透技术又是如何实现的?
了