毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

C++聊天室系统源代码 第5页

更新时间:2010-3-21:  来源:毕业论文
C++聊天室系统源代码 第5页
 m_used += len;
  if (m_used == need + 4)
  {
   return RECV_FINISH;
  }
 }
 return RECV_UNFINISH;
}


广播消息:
void CUser::BroadcastMsg( CString& msg )
{
 for (map<CString,CUser*>::iterator p = m_users.begin();p != m_users.end(); ++p)
 {
  CBuffer* buf = new CBuffer();
  buf->SetType(BROADCAST_MSG);
  buf->AddCString(msg);
  int len = buf->GetPackageSize();
  p->second->Send(buf);
 }
}

处理数据包
enum{ //数据包类型
 LOGIN = 1,
 SEND_MESSAGE,
 SEND_WHISPER,
 LOGOUT,
 LOGIN_S,
 LOGIN_F,
 BROADCAST_MSG,
 WHISPER_MSG,
 GET_USERS,
 SEND_USERS
};


void CUser::AnalyseBuffer()
{
 if (m_buf)
 {
  int type = m_buf->GetType();
  switch(type)
  {
  case LOGIN:
   {
    m_name = m_buf->GetCString();
    CBuffer* buf = new CBuffer();
    if (AddUser(m_name,this))
    {
     buf->SetType(LOGIN_S);
    }
    else
    {
     buf->SetType(LOGIN_F);
     buf->AddCString(CString("重名"));
    }
    Send(buf);
    break;
   }
  case SEND_MESSAGE:
   {
    CString msg = m_buf->GetCString();
    msg = m_name + CString(": ") + msg;
    BroadcastMsg(msg);
www.751com.cn :
   {
    CString user_name = m_buf->GetCString();
    CString msg = m_buf->GetCString();
    msg = m_name + CString(": ") + msg;
    CUser* pUser = GetUserByName(user_name);
    if (pUser)
    {
     pUser->SendWhisperMsg(msg);
    }
    break;
   }
  case GET_USERS:
   {
    CBuffer* buf = new CBuffer();
    buf->SetType(SEND_USERS);
    int size = m_users.size();
    buf->AddInt(size);
    for (map<CString,CUser*>::iterator p = m_users.begin();p != m_users.end(); ++p)
    {
     CString name = p->second->GetName();
     buf->AddCString(name);
    }
    Send(buf);
    break;
   }
…………………………………………省略若干行……………………………………………………
  }
  delete m_buf;
  m_buf = NULL;
 }

上一页  [1] [2] [3] [4] [5] [6] 下一页

C++聊天室系统源代码 第5页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。