Gelöscht
本帖最后由 阿东先生 于 2013-7-6 07:29 编辑Gelöscht 感觉理论上应该是比较难实现的。因为QQ,msn这类的聊天程序,一旦双方建立连接之后,就跟服务器没什么关系了。
ps.你咋知道那玩意儿是金盾而不是越南盾哩?:) 1.7 QQ采用何种通信协议
QQ采用标准的TCP/IP协议为通信协议。
TCP/IP协议中又分为TCP协议和UDP协议,TCP协议是面向连接的协议,它比较安全、稳定,但是效率不高,占用资源较多。UDP协议是无连接方式的协议,它的效率高,速度快,占资源少,但是其传输机制为不可靠传送,必须依靠辅助的算法来完成传输控制。QQ采用的通信协议以UDP为主,辅以TCP协议。由于QQ的服务器设计容量是海量级的应用,一台服务器要同时容纳十几万的并发连接,因此服务器端只有采用UDP协议与客户端进行通讯才能保证这种超大规模的服务。
QQ客户端之间的消息传送也采用了UDP模式,这不同于国外的ICQ在客户端之间采用TCP进行通讯的模式。因为国内的网络环境非常复杂,而且很多用户采用的方式是通过代理服务器共享一条线路上网的方式,在这些复杂的情况下,客户端之间能彼此建立起来TCP连接的概率较小,严重影响传送信息的效率。而UDP包能够穿透大部分的代理服务器,因此我们在开发QQ的时候选择了UDP作为客户之间的主要通信协议,因此网友会觉得用QQ传送信息要比ICQ及其它采用TCP协议的ICQ类软件快。当然,UDP协议优点突出,缺点也很明显:UDP包的传送是不可靠的传输,它不象TCP一样有包重传等机制,因此采用UDP协议的信息在传送过程中很容易丢失,这样就需要辅助的算法实现包重传机制以保证信息不会丢失,而QQ服务器的负荷非常重,因此在QQ 99b 0425之前我们只是在客户端到客户端之间传送消息时采用了这个辅助的机制,当消息在客户间直接传送无法到达时就需要通过服务器来中转,由于服务器端在老版本的时候迫于负荷过重的压力没有对主动发往客户端的信息进行传输控制,因此在老版本的时候容易造成通过服务器中转的信息丢失的现象。在QQ99c 0725之后我们单独设立出了几台专用的服务器采用包重传机制来中转消息(仅限于99c之间传递的消息),确保通过服务器转发的消息也能够发送到对方的QQ。
以上载自腾讯主页,它的第二段中说两个客户端是没有通过服务器,是UDP连接。 转发的信息,可以过滤,但是即时通讯的不可能过滤.除非腾讯针对某个用户.
03:49:45
你刚才发送的消息:"法轮功 "没有发送成功(服务器超时).
03:49:53
你刚才发送的消息:"法轮功好.. "没有发送成功(服务器超时).
msn就不能实现了. 晕倒,ok,俺把刚才那句话加上定语:
因为QQ,msn这类的聊天程序,一旦双方建立(稳定的)连接之后,就跟服务器(非代理,而是如腾讯服务器)没什么关系了。
:(( QQ的IM不经过服务器转发,但是MSN,OICQ的IM都是服务器转发的。只有大规模的信息传送(文件,语音,视频)才是以点对点的方式进行的。 很明显嘛,平时的聊天是UDP的转输,语音之类的要求连续性当然是点对点的啦。 偶出洋相了,大家8要笑偶。MSN试过了,好象是不会被弹回来的。 语音视频也大多数是UDP的,毕竟这里不需要很清晰,需要的是没有延时。 其实弹回不弹回又有什么不一样吗?只是让别人花几分钟考虑怎么让它不弹回。
页:
[1]