请教完全模式[超大量客户端]的socket编程实现 看到下面有几个帖是说多客户端的实现,但是那里所谓多客户端还好,今天老师要我找完全模式的socket编程,客户端数量在6万(超过32位的端口数),请问高手如何实现 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://msdn2.microsoft.com/en-us/library/aa365198.aspx 很多种模式都能支持到,我想到的问题是,你的老师怎样帮你测试是不是能稳定处理60000个客户端?不要告诉我只是发6W个连接上来,每个连接发ABC到服务器,然后服务器又返回个ABC的echo服务器?如果真是的话,windows核心编程那本书就有你要的程序的源代码了. Thank You ,我是教育网所以国外站对我来说在搜索范围外了,谢谢提醒还有就是老师给的题目就是这样,至于测试吗我就不知道了 一个服务器的能承载的客户端数量与端口号无关。在Win32平台当中会有一个核心内存限制。除非系统当中应用程序和服务的布署非常简单,否则当你接受了6万个连接之后,系统会变得非常缓慢。 完成端口CreateIoCompletionPort 诶? 完成端口不是 OverLapped么? Overlapped和完成端口,有一定概念上的区别,完成端口依赖于Overlapped,或者可以说是Overlapped之上的一个对大量并发性I/O管理的一个模式上的扩充。 可以参考一下Windows Platform SDK. 客户端数量6万个并不是意味着同时和服务器连接就是6万个,而是说明了其并发访问程度是比较高的,另外,一台服务器也不可能同时支持6万个TCP的连接,socket的端口最大也就是65536,所以最大就是6万多个同时TCP连接,而windows系统在超过几千个tcp连接后就会开始拒绝新的连接产生。其他系统也最多可能1到2万个同时TCP连接。另外,完成端口的编程可以看一下MSDN的相关文档。关键是如何投递一个完成端口的请求,如何在请求完成时候进行相应的处理。完成端口其实是一种控制翻转的一种模式,理解的这种编程的模式,使用完成端口进行编程不是什么大的难题了。 做为服务器,连接数量与端口的限制无关,同一个List Socket上产生的连接占用的是同一个端口号。 曾经做过一个测试,在Win32平台下同时接受了8万多个连接,几乎没有通讯能力,但是在6万多的时候,通迅仍然正常。8万这个数字是测试得到的数据,具体是不是对于断开的连接没有处理好,不是太清楚,但是从理论上来讲,一个运行专属服务的Win32系统,应该有240MB左右的核心内存(理论上限是256MB)可以供其使用,即使每一个连接占用4k(具体占用多少已经忘了,印象中应该低于这个值),那仍然能够有可以建立超过6万个连接资源。如果是64位平台,就没有了这个核心内存的限制,也就意味着只要有足够的内存资源,连接数可以远远地超过6万。 中午测试发现,占用核心内存的主要是客户端(同机测试),发起六万多个连接(成功五万九千多个,服务器有心跳检测,但是客户端不发送数据,短时间内有部分就已经被断掉了)。极限是任务管理器显示核心内存占用259.xMB。如果客户端不影响服务器的断开,释放SOCKET,即便这近六万个连接服务器一一断开,核心内存的占用仍然存在。只有当客户端程序释放SOCKET才相应地释放资源。 有关VGA采集卡和视频编码 这样的字符类型你知道么? c++一次性给数组的所有成员赋值怎么写 谁能帮我解释一下,急盼 一幅大的图像文件(文件大,图像也大),我要把它缩小,再另存为一个小的文件(文件小,图像也小)! 求助VC编译问题 简单问题,求助,点击一个按钮(button)后,如何使它成为无效? 请教数据类型转换!(LPSTR->BYTE)紧急求救中。。。 谁是最可爱的人, 可以帮帮我这只不菜的鸟~_~ 请问如何做一个后台服务程序 vc2005里面怎么导入库文件pcre.lib 关于可编辑Item的CListView派生类问题(编辑Item完成后,失去焦点)
还有就是老师给的题目就是这样,至于测试吗我就不知道了
一个服务器的能承载的客户端数量与端口号无关。在Win32平台当中会有一个核心内存限制。除非系统当中应用程序和服务的布署非常简单,否则当你接受了6万个连接之后,系统会变得非常缓慢。
CreateIoCompletionPort
另外,完成端口的编程可以看一下MSDN的相关文档。关键是如何投递一个完成端口的请求,如何在请求完成时候进行相应的处理。完成端口其实是一种控制翻转的一种模式,理解的这种编程的模式,使用完成端口进行编程不是什么大的难题了。