是不是针对每个I/O请求都要开一个独立的WSAOVERLAPPED结构啊?比如我在一个名为 listen 的 socket 上同时投递四个WSASend请求
那是不是要开4个WSAOVERLAPPED结构 然后分别绑定4个WSAEVENT 然后在分别传递给那4个WSASend再然后调用WSAWaitForMultipleEvents()等待时间到来?
大概意思就是说 把 WSAEVENT 和 WSAOVERLAPPED 看成一个整体,二者关系是1:1 然后可以以1:N的关系和SOCKET建立关系?求真相。。

解决方案 »

  1.   

    是不是针对每个I/O请求都要开一个独立的WSAOVERLAPPED结构啊?是的。。
      

  2.   

    和socket建立连接不是1:N的 也是1:1的,服务器在不停地连接创建
      

  3.   

    那是不是要开4个WSAOVERLAPPED结构 然后分别绑定4个WSAEVENT 然后在分别传递给那4个WSASend根据我的猜测,不用开4个WSAOVERLAPPED,只是需要4个WSAEVENT而已(如果你需要同时投递4个I/O请求的话)。你可以编程试试。
      

  4.   


    当然是在第一个wsasend的回调函数返回后或者是第一个wsasend的事件触发后再调用下一个wsasend了
    你连续调用wsasend有什么意义呢
    还不如把这4个send的缓冲区合并填到一个wsasend里面
    看wsasend的第三个参数,就是缓冲区数量
    开4个WSAOVERLAPPED结构 然后分别绑定4个WSAEVENT 然后在分别传递给那4个WSASend是一种非常失败的做法