网络聊天系统源代码 第6页
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] ... 下一页 >>