请网络编程的高手,可否从性能上讲解一下wsaasyncselect的异步i/o模型与wsaeventselect异步i/o模型的差别,例如:推荐wsaeventselect模型,请说出它的优点来

undercall 2007-12-03 11:10:58
请网络编程的高手,可否从性能上讲解一下wsaasyncselect的异步i/o模型与wsaeventselect异步i/o模型的差别,例如:推荐wsaeventselect模型,请说出它的优点来
...全文
343 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxcong 2007-12-05
  • 打赏
  • 举报
回复
WSAAsyncSelect一定要有个窗口负责处理消息,比如 MFC的CAsyncSocket.后者是事件通知,适合无窗口情况,一般来说前者在Windows下编程相对容易一些。
不过它们的性能差距还是不小的
windows网络编程2,后面有个测试结果,各种模式的情况连接成功对比。

WSA- Async Select
7000/ 1956    
12,000/ 4077

WSA- Event Select
7000/ 6999
12,000/ 11,080

数据含义:连接次数/成功次数
从他提供的数据来看,前者做服务器支持客户端最好在几百或千人左右,太多就不大稳定了,毕竟窗口处理消息的能力有限。
而Event Select这种模式非常成熟,在Winsock1.1版本时,兼容BSD socket的select,有了Unix和Linux多年的经验,性能应该比较可靠。

顺便一说,这个数据是书上提供的,我没进行测试。不过MS出版的书,理论上讲应该没太大出入。


neversaydie518 2007-12-05
  • 打赏
  • 举报
回复
WSAAsyncSelect适合于处理窗口消息,在属于窗口的回调函数中处理WSAAsyncSelect中指定的要接收消息,通过该消息再处理WSAAsyncSelect中指定的网络事件。
WSAEventSelect是等待网络事件触发内核事件对象,再进行处理。显然不需要在窗口过程中处理,因为没有窗口~_~
显然,你要是一个基于对话框或者基于其他窗口的程序,要处理消息,当然推荐WSAAsyncSelect了。
WSAAsyncSelect更有针对性,WSAEventSelect大众化一点吧

PS:
windows网络编程技术,windwos网络编程
貌似前面那个是中文版,后面那个英文版
Torch009 2007-12-05
  • 打赏
  • 举报
回复
WSAAsyncSelect在windwos下可以用。不太习惯WSAEventSelect。windows网络编程技术上有这些。windwos网络编程没看过,但更应该有这些。
DentistryDoctor 2007-12-05
  • 打赏
  • 举报
回复
WSAAsyncSelect是通过窗口消息,而WSAEventSelect是通过Event来实现的。
Windows网络编程中有一章的结尾,专门讲了几种IO模型的选择时的考虑。
工布之者 2007-12-05
  • 打赏
  • 举报
回复
好有才

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧