这段代码是用来发送msg消息的,之前调用过conect函数。
我的问题是,为什么这段代码一个send函数没有,却实现了发送消息?class CClientSocket : public CSocket
BOOL CClientSocket::SendMessage(CMessg * msg)
{
if (m_aSessionOut != NULL)
{
msg->Serialize(*m_aSessionOut);
m_aSessionOut->Flush();
return TRUE;
}
else
{
//对方关闭了连接
m_bClose=true;
CloseSocket();
return FALSE;
}
}

解决方案 »

  1.   

    msg->Serialize(*m_aSessionOut);
    m_aSessionOut->Flush();
    ======================
    这是什么
    msg估计是继承CObject类的
    看书...
      

  2.   

    没错,msg是继承CObject类的但是我的问题是CClientSocket::SendMessage并没有调用
    CAsyncSocket::Send,
    virtual int Send( const void* lpBuf, int nBufLen, int nFlags = 0 );这个函数,如何发送数据?
      

  3.   

    查看CMessg的Serialize实现,重载序列化操作可以实现
      

  4.   

    是这个么?
    是不是还要重载<<? 原来的类没有这么做
    <<这个就能发送消息?  void   CMessg::Serialize(CArchive&   ar)   
      {   
      //   发送消息   
      if(ar.IsStoring())   
      {   
      ar   <<   type;   
      ar   <<   from;   
      ar   <<   to;   
      ar   <<   m_str;   
      }   
      //   接收消息   
      else   
      {   
      ar   >>   type;   
      ar   >>   from;   
      ar   >>   to;   
      ar   >>   m_str;   
      }   
      }
      

  5.   

    问题解决了,谢谢关注,原来是这个:
    http://topic.csdn.net/t/20020125/13/498675.html