
服务器
有两个原因。其一,早期
服务器性能欠佳,
服务器端难以承受TCP连接。在2010年以前进行大型游戏
服务器端开发时,几乎无人会考虑TCP协议。别的暂且不提,光是内存就可能出现爆仓情况。这是因为每个TCP连接都会耗费大量的内存资源。其二,在
中国有特殊情况,TCP打洞不但操作麻烦,而且成功率较低。
QQ的一项重要功能是让两个
客户端直接相互传输文件,在骨干网网速较慢的时候,只能采用两个
客户端直接连接的方式。那时骨干网网速仅有4Mbps,而两个人很可能处于同一个办公内网,或者都在方正宽带这类二级运营商的内网之中,尤其这两人可能是同事或者
同学关系。所以直接连接会带来极大的速度优势(哪怕只是发送信息),而这种情况只能通过UDP协议来打洞。至于TCP协议,当网速变快、
服务器内存增大以及有立法要求之后,所有消息都必须经由
腾讯服务器统一分发。在这种情况下,TCP协议其实更具优势。不过
QQ已经发展成如今的模样,并且还有大量旧
客户端无法及时淘汰。在这种情形下,基本上只能慢慢进行修补,想要大规模升级代码是不可能的了。因为一旦升级代码,开发过程绝非一两年就能完成,在这个过程中,漏洞会多不胜数,别的不说,光是营销机器人、
诈骗机器人这些问题,就够开发团队头疼的了。