请问使用Select模型与直接使用CAsynSocket自带的接收、发送、连接事件有什么区别? 速度比使用事件快吗?还是稳定?还是其他方面的原因? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 使用Select一般与多线程一起使用效率当然比时间快呀,也稳定 Winsock提供了五种套接字I/O模型来解决这些问题.他们分别是Select(选择),WSAAsyncSelect(异步选择),WSAEventSelect (事件选择), overlapped(重叠) , completion port(完成端口) .CAsynSocket内部使用的是WSAAsyncSelect模型。使用Select模型效率要高一些,但比较复杂。使用CAsynSocket编程要简单很多,CAsynSocket对socket函数都做了封装,更重要的是你的程序不用考虑多线程。 不是吧,以我的经验看来,CAsyncSocket也是基于消息循环的,向当与同步了.你要阻塞随便那个事件,比如OnAccept,该CAsyncSocket的宿主UI线程就阻塞了..在使用的时候,对于每个新的连接,触发OnReceive事件之后都是在线程池里面去Receive的.但是并发测试的时候,还是有Connect失败...把Listen开大就有所改进..奇怪了,listen的个数因该不会影响效率吧..一般是5个啊. 很难说线程会比消息快的.不过本质上我认为本质上SOCKET用消息或者线程没有太大区别.何况如果你想用线程的话直接用SOCKET得了,就可以不用CAsynSocket 我比较喜欢用select,因为移植方便。你可以用循环select(设置很小的时间间隔),根据SELECT的结果发布WINDOWS消息,另外一个进程处理WINDOWS消息,这样完全实现了CAsyncSocket类似的功能。 全双工转半双工通信 谁会制作变灰的BMP图片?或这样的工具 在ListCtrl控件中,如何把每一item前的checkbox变为可三态显示的checkbox 请教关于提取资源文件中的对话框的问题! 如何枚举已连网的进程? try{}catch(...)能否捕捉DLL中的异常? 谁能详细解释一下内核对象的概念及其与进程的关系 ado问题,请指教 求助关于CHtmlView的问题 请教个问题 想不清楚的通讯问题 关于子对话框返回母对话框的问题?
效率当然比时间快呀,也稳定
Select(选择),WSAAsyncSelect(异步选择),
WSAEventSelect (事件选择), overlapped(重叠) , completion
port(完成端口) .CAsynSocket内部使用的是WSAAsyncSelect模型。
使用Select模型效率要高一些,但比较复杂。
使用CAsynSocket编程要简单很多,CAsynSocket对socket函数都做了封装,更重要的是你的程序不用考虑多线程。
在使用的时候,对于每个新的连接,触发OnReceive事件之后都是在线程池里面去Receive的.但是并发测试的时候,还是有Connect失败...把Listen开大就有所改进..奇怪了,listen的个数因该不会影响效率吧..一般是5个啊.
不过本质上我认为本质上SOCKET用消息或者线程没有太大区别.
何况如果你想用线程的话直接用SOCKET得了,就可以不用CAsynSocket