WSAAsyncselect模型做客户端程序时,为什么先要connect,然后再注册FD_CONNECT和FD_READ,之后才能响应这两个网络事件啊,如果没有先调用connect,FD_CONNECT和FD_READ就没有响应?困惑啊,,,就这么点积分了大伙见谅吧

解决方案 »

  1.   

    WSAAsyncselect是基于TCP,所有必须要有connect,另一个致命的缺点就是基于WINDOWS窗口消息!另外,个人建议,如果这个程序不需要考虑安全、压力测试t、仅内网测试等等,或者仅仅只是学习参考,可以写写玩玩!但是如果对外开放、或者超过几十或过百人使用的模型,我建议LZ还是趁早放弃,因为我之前写过一基于WSAAsyncselect大约高峰期在200人左右的在线聊天室程序,为什么说基于窗口消息是致命的,假设你没有强大的防火墙后台支撑,而WINDOWS消息队列也有BUG,比如同时大量并发连接或恶意流量过来,那么windows消息队列也就阻塞了,然后窗口就无反应假死掉了!
      

  2.   

    问题1. 先前的connect函数应该不会阻塞吧?因为WSAAsyncselect已经自动将套接字变为非阻塞形式了,是这样吗?问题2. 那么为什么还要FD_CONNECT事件呢?在响应FD_CONNECT之前不是已经有过connect函数了么?