当使用SOCK_DGRAM时,还能用CAsyncSocke::OnReceive来判断接受到数据吗??

解决方案 »

  1.   

    sure ,you can receive it.there is an example
    [TestDoc.h]
      ...
      CSocketSrv* m_pSocket;
      ...[TestDoc.cpp]  CTestDoc::InitSocket()
      {
        CSocketSrv* m_pSocket = new CSocketSrv(this);
        m_pSocket->Create( nPort, SOCK_DGRAM );
        ....
      }
      void CTestDoc::ProcessRead()
      {
       BYTE bBuffer[1024];
       char sShow[1030];
       while ( m_pSocket->Receive( bBuffer, 1024 ) > 0 )
       {
             wsprintf( sShow, "Get:%s", bBuffer);
             AfxMessageBox( sShow, MB_OK);
       } m_pSocket->Close();
      }
      
    [SocketSrv.h]  class CTestDoc;
      class CSocketSrv: public CAsyncSocket
      {
      public:
            CSocketSrv(CTestDoc* pDoc);
      public: 
            CTestDoc* m_pDoc;
            virtual void OnReceive(int nErrorCode);
      ...
      }[SocketSrv.cpp]
      
      CSocketSrv::CSocketSrv(CTestDoc* pDoc)
      {
            m_pDoc = pDoc;
      }  CSocketSrv::OnReceive(int nErrorCode)
      {
            CAsyncSocket::OnReceive(nErrorCode);
            m_pDoc->ProcessRead();
      }