[急]请问各位如何处理N个客户端连接的问题? ( 积分: 100 )

  • 主题发起人 主题发起人 cnhotel
  • 开始时间 开始时间
C

cnhotel

Unregistered / Unconfirmed
GUEST, unregistred user!
D7+MSSQL
原来我们写的都是socket三层连接处理少量客户端登录没问题!
现在新要求是成千甚至上万个客户端同时登录连接,至少会有1000个客户端,请问各位大富翁怎么处理的呢?
 
完成端口是不2的选择.
 
楼上可否稍微细说下?
谢谢了
 
n多人问过了,搜索一下吧,既可以使用网上开源的,也可以直接购买成熟稳定的.
 
给你说下原理还是可以的。。。
普通处理,为每个客户端建立一个线程,维护这个会话。这样当客户端急剧增加的时候,线程变得很多,线程需要操作系统管理,要为每个线程分配时间片,线程越多,时间片越小,此时大部分时间被操作系统用于切换线程的操作(包括创建和销毁线程),于是当客户端很多时,不能为每个客户端创建一个线程。
完成端口,理论有几个CPU就创建几个线程,操作系统会管理一个数据队列,当有数据接收到之后就至于队列的最末尾。然后所有线程都在队列中循环取出数据,进行处理。这样不会出现过多的线程切换,不用线程阻塞等待接收数据(除非队列都处理完毕),可以极大提高处理效率。

你需要查的是
怎么创建一个完成端口(队列)
怎么绑定一个完成端口(好像跟创建是同一个函数)
怎么从队列取出数据(类似GetMessage的东东)
 
请问各位有没有这方面的书籍或者例程介绍呢
在网上搜索的都是零零碎碎的
摸不着头绪
 
1 对现有程序代码优化
2 检测实际服务器最大并发处理能力
3 最大用户数/并发处理数=通讯服务器数
这样做的好处是不用改动太多程序代码,几天就可以实现,缺点是要M多些
 
怎么创建一个完成端口(队列)
怎么绑定一个完成端口(好像跟创建是同一个函数)
怎么从队列取出数据(类似GetMessage的东东)

这些搜了半天没搜到....[:(]
 
感谢帮助
 
后退
顶部