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

网络聊天系统源代码 第6页

更新时间:2009-1-2:  来源:毕业论文

VC++网络聊天系统
while (!m_pRecordset->EndOfFile)
 {
  //读用户名
  vFieldValue = m_pRecordset->GetCollect("用户名");
  strFieldValue = (char*)_bstr_t(vFieldValue);
  //判断用户名是否正确
  if (strcmp(strFieldValue, m_MgName) == 0)
  {
   //读密码,判断密码是否正确,如果正确则显示管理页面
   vFieldValue = m_pRecordset->GetCollect("密码");
   strFieldValue = (char*)_bstr_t(vFieldValue);
   if (strcmp(strFieldValue, m_MgPasswd) == 0)
   {
    CManagePage dlg;
    OnCancel();
    dlg.DoModal();
    break;
   }
   //否则提示错误
   else
   {
    MessageBox("密码错误!", "提示", MB_ICONWARNING |MB_OK);
    m_MgPasswd = "";
    GetDlgItem(IDC_PASSWD)->SetFocus();
    return;
   }
  }
  m_pRecordset->MoveNext();
 } 
}

查看用户界面
实现代码:
UINT RecvThread(LPVOID sock)
{
 BOOL IsRun = TRUE;
 SOCKET mySocket;
 mySocket = (SOCKET)sock;

 POSITION pos;
 POSITION pos2;
 CP2PData temp;
 CUserSocket usersocket;
 CUserSocket tempsock;
 CRoomInfo   roominfo;
 int   listcount;

 while(IsRun)
 {
  int n_recv;
  char RecvBuffer[1024];
  //接收用户消息
  n_recv = ::recv(mySocket, RecvBuffer, sizeof(RecvBuffer), 0);
  if (n_recv > 0)
  {
   //分割消息,取出标志位
   RecvBuffer[n_recv] = '\0';   
   int i = 0;
   char flag[20];
   char *pbuffer = RecvBuffer;
   while(*pbuffer != '\0')
   {
    if(*pbuffer == '~')
     break;
    flag[i] = *pbuffer;
    i++, pbuffer++;
   }
   flag[i] = '\0';
   pbuffer++;
   //用户退出消息处理
   if (strcmp(flag, "USER_QUIT") == 0)
   {
    //查找用户结点
    pos = SocketList.GetHeadPosition();
    listcount = SocketList.GetCount();
    for(int j=0; j<listcount; j++)
    {    
     usersocket = SocketList.GetNext(pos);
     if (usersocket.clientsocket == mySocket)
     {
      //找到用户结点
      send(mySocket, RecvBuffer, strlen(RecvBuffer) + 1, 0);
       break;
     }
    }
    if (pos == NULL)
    {
     pos = SocketList.GetHeadPosition();
    }
751com.cn
    {
     SocketList.GetPrev(pos);
    }
    //删除该用户
    SocketList.RemoveAt(pos);
    //设置标志位,让线程结束
    IsRun = FALSE;
   }   
   //普通消息处理
   else if (strcmp(flag, "USER_MESSAGE") == 0)
   { 
    int len;
    int roomno;
    char *m_pstr;
    char usname[20];
    CString SourceName;
    char sendbuffer[200];    
    
    //查找当前消息的用户
    pos = SocketList.GetHeadPosition();
    listcount =SocketList.GetCount();
    for(int j=0; j<listcount; j++)
    {
     usersocket = SocketList.GetNext(pos);
     if (usersocket.clientsocket == mySocket)
     {
      //找到并记录用户名和房间编号
      SourceName = usersocket.username;
      roomno = usersocket.RoomNo;
      break;
     }
    }
    //查找字符串pbuffer中是否有:
    m_pstr = strchr(pbuffer,':');
    if (m_pstr == NULL)
    {
     //如果为空,则是一般聊天消息
     sprintf(sendbuffer, "%s~%s 说:%s", flag, usersocket.username, pbuffer);
     
     pos =SocketList.GetHeadPosition();
     for(j=0; j<listcount; j++)
     {
      usersocket = SocketList.GetNext(pos);
      if (usersocket.RoomNo == roomno)
      {
       //向所有在同一聊天室的用户转发消息
       send(usersocket.clientsocket, sendbuffer, strlen(sendbuffer) + 1, 0);
      }
     }
    }
    else
    {
     //不为空,则是密语
     len = strlen(pbuffer) - strlen(m_pstr);
     //取出密语对象用户名

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ... 下一页  >> 

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

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