腾讯QQ是用什么语言写的?
腾讯QQ的开发分客户端软件和服务器端软件两部分。
客户端采用 Microsoft Visual C++开发;
服务器端软件采用Linux gcc开发 ;
数据库采用MySql 数据库。
腾讯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。
最新文章
- java内存分配原理
- isp和3a的联系与区别是什么?
- [置顶] Android开发之MediaPlayerService服务详解(一)
- Android:ServiceDemo
- centos command中 * . 的重要性
- 快速开发基于 HTML5 网络拓扑图应用1
- SQLite学习手册(实例代码<;一>;)
- PHP语言学习之php-fpm 三种运行模式
- Yet Another Maxflow Problem CodeForces - 903G (最小割,线段树)
- 使用wifi ssh: connect to host hadoop000 port 22: No route to host
- ODT(old driver tree)详解(带例题)
- 就for循环VS for-in循环
- hdu 4461 第37届ACM/ICPC杭州赛区I题
- [转]php-mobile-detect
- 微信小程序JS导出和导入
- Windows下GUI编程——窗口
- CSSREM
- 【刷题】BZOJ 3669 [Noi2014]魔法森林
- javascript页面刷新的一些方法
- 可变长度子网掩码(VLSM)在子网划分中的应用
热门文章
- Linux组
- 关于 Spring-WebFlux 的一些想法
- 【Linux】Linux没有网络,可能的解决方法
- svn创建多个版本库
- [ flask ] flask-restful 实现嵌套的有关系的输出字段
- 由浅入深学习Apache httpd原理与配置
- [转]Python3字符串前缀u、b、r
- spring cloud --- Ribbon 客户端负载均衡 + RestTemplate + Hystrix 熔断器 [服务保护] ---心得
- react中关于create-react-app2里css相关配置
- Go语言系列之日志库zap