另:
Overlapped I/O一次可以投递多个I/O请求,是什么意思???怎么个用法,帮忙举个例子,谢先!!

解决方案 »

  1.   

    WSAAccept会返回NULL?
    你要重新调用WSAEventSelect才行一次投递多个IO
    是指对同一个socket可以继续提交一个WSARecv或者WSASend
    而不用等待前面那个完成
      

  2.   

    WSAEventSelect(...FD_ACCEPT)while(1)
    {
    ...
    FD_ACCEPT触发事件,WAITFOR()返回
    ...
    resetevent(事件)
    ...
    if WSAACCEPT()== NULL
      continue;
    else
      处理}上述程序在continue之后,还会再次收到FD_ACCEPT吗???
      

  3.   

    不会,需要重新调用WSAEventSelect
      

  4.   

    为什么?一定吗?我觉得FD_ACCEPT没有被处理前,还是会再次激发事件.
      

  5.   

    没人?触发FD_ACCEPT事件的条件有人知道吗?
    比如client请求connet,server端listen,然后accept,FD_ACCEPT在事件队列里面何时产生,销毁?
      

  6.   

    FD_ACCEPT,在你listen执行完后,客户端有Connect时产生
      

  7.   

    WSAAsyncSelect和Overlapped是两种不同的模式。第一种是异步非组塞模式。使用 WSAEventSelect注册事件,也被MFC的CSock采用。用了第一种就不要再用重叠模式了。而用了第二种就不需要去注册事件,只需要投递接收数据的请求就可以了。
      

  8.   

    如果采用第一种模式,可以直接使用CSock控件
    m_Server.Create(ServerPort)
    m_Server.Listen();
    m_Server.Send(m_Message,n+1);m_Server.Close();