使用WINDOWS SOCKET 2 API 写网络程序时,WSAEventSelect和select哪个是更好的解决方案?
他们在不同的情况下有什么样的性能上的差别?
欢迎大家讨论!
投入重分,希望我和所有未知者能得到帮助!

解决方案 »

  1.   

    WSAEventSelect应该是对select的封装,实质是一样的,但用起来会方便些。
    不过如果要用WSA系列的,那就必须全部使用WSA系列的函数,尽量别混着用。
      

  2.   

    请看这篇文章
    http://blog.blogchina.com/article_99373.511644.html
      

  3.   

    WSAEventSelect用起来比较方便,功能也不错
      

  4.   

    你既然是用 WINDOWS SOCKET 2 API 那就用 WSAEventSelect 吧。
    性能上应该没太大差距。
    从工能上 考虑WSAEventSelect好用些。
      

  5.   

    steedhorse(晨星):
    如果要用WSA系列的,那就必须全部使用WSA系列的函数,尽量别混着用。我看MSDN在说明WSAEventSelect的过程中,遇到接受发送数据都是用的recv和send。
    能说说你的“尽量别混着用”的理由吗?main90(小马) :
    完成端口应该用在响应大规模连接请求上吧
    或者说,我的客户端SOCKET的实现没有必要使用完成端口技术吧。
      

  6.   

    没有实践过,只是想到了下面的问题:
    在大多数时候,socket是可写的,那么,WSAWaitForMultipleEvents(...,FD_WRITE)
    是不是总是立刻返回啊?那CPU占用率就要100%了吧。如果上面的猜想成立,我们在程序中是不是要加另外的一些控制?比如再等待由我们
    控制的另外一个事件对象。其实,试试就行了,可惜我现在没有时间建立程序框架。
      

  7.   

    建议阅读<Windows网络编程>
    在WSAEventSelect与select之间,建议使用WSAEventSelect.
      

  8.   

    select可以比较容易的移植到LINUX上吧!~
      

  9.   

    使用WSAEventSelect在Windows上更好一些
      

  10.   

    WSAEventSelect()很方便,其用到的WaitForSingleObject()占用资源很少!!
      

  11.   

    建议使用WSAEventSelect效率很高,简单使用很方便