当利用SendData()函数连续发送数据的时候,遇到了发送失败,此时发送就以失败而告终,代码如下:
void CClientSocket::OnSend(int nErrorCode) 
{
// TODO: Add your specialized code here and/or call the base class
    if(m_pObOutBuffer!=NULL)
    {
if(SendData())
{
    m_nSendLen = 0;
    delete m_pObOutBuffer;
    m_pObOutBuffer= NULL;
}
else
    AsyncSelect();
      }
      else
      {
 m_csOutBuffer.Lock();
     if(!m_OutBufferList.IsEmpty())
      {
                   m_nSendLen = 0;
 m_pObOutBuffer  =  m_OutBufferList.GetHead();
 POSITION  pos = m_OutBufferList.GetHeadPosition();
 m_OutBufferList.RemoveAt(pos);
                
 if(SendData())
 {
     m_nSendLen = 0;
     delete m_pObOutBuffer;
     m_pObOutBuffer = NULL;
  }
      }
      if(!m_OutBufferList.IsEmpty())
AsyncSelect();
   m_csOutBuffer.Unlock();
} CAsyncSocket::OnSend(nErrorCode);
}为是么老是发生发送数据阻塞的现象呢?即在下面的函数中nSendLen==-1,这种情况是在连续发送一个数据包后出现了,大家帮我分析分析以下,该怎么处理呀
BOOL  CClientSocket::SendData()
{
static int iCounts = 0;
if(m_nSendLen >= MAX_PACK_LEN)
{
return TRUE;
}

BYTE *pBuff =  m_pObOutBuffer->m_buff+m_nSendLen;
int nSendLen = Send(pBuff,MAX_PACK_LEN-m_nSendLen);

if(nSendLen==SOCKET_ERROR)
{
                  int iError = GetLastError();
if (iError==WSAEWOULDBLOCK)
AsyncSelect();
else
{
CString str;
str.Format("发生网络错误: %d",iError);
AfxMessageBox(str,MB_OK);
return FALSE;
}
}
else
{
m_nSendLen += nSendLen;
if (nSendLen>=MAX_PACK_LEN)
{
    MSGHEAD  *pHead = (MSGHEAD *)m_pObOutBuffer->m_buff;
TRACE("The package is %d  ,iPackageID = %d\n",iCounts++,pHead->iPackageID);
return TRUE;
}
else
AsyncSelect();
}
return FALSE;
}
为什么呢?
请教该怎么处理呢?