有没有人知道AsyncSelect是怎么用啊!!!急!!再线等!!!

解决方案 »

  1.   

    常用的参数为 FD_WRITE FD_READ FD_ACCEPT FD_CONNECT
    当使用这条语句后 上边四个参数分别对应以下四个函数
    On_Send On_Receive On_Accept On_Connect
    这四个函数都是CAsyncSocket类的虚函数 
    只要重载这四个函数 添加上相应的代码就可以使用了
    void CCSockClientDlg::OnSend() 
    {
    if (m_clientSocket.m_bConnected)
    {
    m_clientSocket.m_nLength=GetDlgItem(IDC_EDITMSG)->GetWindowText
    (m_clientSocket.m_szBuffer, sizeof(m_clientSocket.m_szBuffer));
    m_clientSocket.AsyncSelect(FD_WRITE);
    SetWindowText("");
    }

    }void MySock::OnSend(int nErrorCode) 
    {
    Send(m_szBuffer,m_nLength,0);
    m_nLength=0;
    memset(m_szBuffer,0,sizeof(m_szBuffer));
    //继续提请一个“读”的网络事件,接收Server消息
    AsyncSelect(FD_READ);
    CAsyncSocket::OnSend(nErrorCode);
    }
      

  2.   

    hehe!!代码是vc知识库上的吧!我就是用这个代码,但是不能实现echo的功能!!!
    不明白为什么?所以上网问的!
      

  3.   

    看看MSDN吧,上面关于API和MFC类的讲解和详细!
      

  4.   

    如果你是从CAsyncSocket派生的话,一般不用调用AsyncSelect,默认的情况是什么消息都触发就是FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE ;当然如果你想自己过虑消息就可以调用AsyncSelect函数,只有满足传进的参数才会触发响应函数。
    如:AsyncSelect(FD_CLOSE)就是只响应关闭消息,其它的消息都不响应,也就是说底层将不传递除了FD_CLOSE以外的消息,这样你的接收、发送、连接的响应函数都不能得到调用,除非你再次用AsyncSelect打开相应的消息。