类似于QQ游戏百万人同时在线的服务器架构实现

本文作者:sodme 本文出处:http://blog.csdn.net/sodme
版权声明:本文可以不经作者同意任意转载,但转载时烦请保留文章开始前两行的版权、作者及出处信息。

  QQ游戏于前几日终于突破了百万人同时在线的关口,向着更为远大的目标迈进,这让其它众多传统的棋牌休闲游戏平台黯然失色,相比之下,联众似乎已经根本不是QQ的对手,因为QQ除了这100万的游戏在线人数外,它还拥有3亿多的注册量(当然很多是重复注册的)以及QQ聊天软件900万的同时在线率,我们已经可以预见未来由QQ构建起来的强大棋牌休闲游戏帝国。
  那么,在技术上,QQ游戏到底是如何实现百万人同时在线并保持游戏高效率的呢?
  事实上,针对于任何单一的网络服务器程序,其可承受的同时连接数目是有理论峰值的,通过C++中对TSocket的定义类型:word,我们可以判定这个连接理论峰值是65535,也就是说,你的单个服务器程序,最多可以承受6万多的用户同时连接。但是,在实际应用中,能达到一万人的同时连接并能保证正常的数据交换已经是很不容易了,通常这个值都在2000到5000之间,据说QQ的单台服务器同时连接数目也就是在这个值这间。
  如果要实现2000到5000用户的单服务器同时在线,是不难的。在windows下,比较成熟的技术是采用IOCP--完成端口。与完成端口相关的资料在网上和CSDN论坛里有很多,感兴趣的朋友可以自己搜索一下。只要运用得当,一个完成端口服务器是完全可以达到2K到5K的同时在线量的。但,5K这样的数值离百万这样的数

  • 0
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 36
    评论
实现类似QQ 的网络通信功能需要使用 Java 的网络编程 API。以下是 Java 实现网络通信的基本步骤: 1. 创建服务器端和客户端的 Socket 对象 2. 在服务器端监听客户端的连接请求 3. 客户端向服务器端发起连接请求 4. 服务器端接受客户端的连接请求,创建新的线程处理客户端请求 5. 服务器端和客户端之间通过输入输出流进行数据传输 具体实现步骤如下: 1. 创建服务器端的 Socket 对象: ```java ServerSocket serverSocket = new ServerSocket(port); ``` 2. 在服务器端监听客户端的连接请求: ```java Socket socket = serverSocket.accept(); ``` 3. 客户端向服务器端发起连接请求: ```java Socket socket = new Socket(host, port); ``` 4. 服务器端接受客户端的连接请求,创建新的线程处理客户端请求: ```java Thread thread = new Thread(new ServerThread(socket)); thread.start(); ``` 其中,ServerThread 是自定义的类,实现了 Runnable 接口,用于处理客户端请求。 5. 服务器端和客户端之间通过输入输出流进行数据传输: ```java // 服务器端发送消息 OutputStream os = socket.getOutputStream(); os.write("Hello, client!".getBytes()); // 客户端接收消息 InputStream is = socket.getInputStream(); byte[] buffer = new byte[1024]; int len = is.read(buffer); String message = new String(buffer, 0, len); ``` 以上是基本的 Java 网络通信实现步骤,可以根据需求进行扩展和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 36
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值