pos = SocketList.GetHeadPosition();
for (j=0; j<listcount; j++)
{
usersocket = SocketList.GetNext(pos);
//获取发送密语的用户名
if (strcmp(usname, usersocket.username) == 0)
break;
}
//向密语对象发送消息
sprintf(sendbuffer, "%s~%s 悄悄对你 说:%s", flag, SourceName, pbuffer);
send(usersocket.clientsocket, sendbuffer, strlen(sendbuffer) + 1, 0);
//向密语者发送消息
sprintf(sendbuffer, "%s~你悄悄对%s 说:%s", flag, usname, pbuffer);
send(mySocket, sendbuffer, strlen(sendbuffer) + 1, 0);
}
//**********转发消息结束**********
}
//创建聊天室消息处理
else if (strcmp(flag, "CREATE_ROOM") == 0)
{
int len;
char roomname[20];
char sendbuffer[100];
CRoomInfo TempRoomInfo;
//取出聊天室名
len = strlen(pbuffer);
for(int n=0; n<len; n++)
{
roomname[n] = pbuffer[n];
}
roomname[n] = '\0';
pos = SocketList.GetHeadPosition();
listcount = SocketList.GetCount();
for (int j=0; j<listcount; j++)
{
usersocket = SocketList.GetNext(pos);
if (usersocket.clientsocket == mySocket)
{
//获得创建者用户名
TempRoomInfo.Creator = usersocket.username;
break;
}
}查看聊天室界面 实现代码:
void CRoomDlg::Display()
{
CRoomInfo TempRoom;
CString TempNo;
int listcount;
POSITION pos;
pos = RoomList.GetHeadPosition();
listcount = RoomList.GetCount();
for (int i=0; i<listcount; i++)
{
TempRoom = RoomList.GetNext(pos);
TempNo.Format("%d", TempRoom.RoomNo);
m_RoomList.InsertItem(i, TempNo);
m_RoomList.SetItemText(i, 1, TempRoom.RoomName);
}
}
4 .2客户端详细设计
4.2.1客户端结构设计客户端登陆流程图
图4-2-1 用户登陆流图
(Graph 4-2-1 User Login Flow Chart)
客户端聊天室流程图 图4-2-2 创建聊天室
( Graph 4-2-2 Chat room basic information)
4.2.2客户端实现原理及功能描述
注册好的帐号通过登陆界面登陆到用户主界面,主要是聊天室基本信息的文字聊天和管理等。
(1) 创建聊天室
A. 可以添加新的聊天室;
B. 可以删除自己创建的聊天室;
(2) 加入聊天室
A. 可以在大厅里看到别人创建的聊天室,然后加入他们的聊天室;
(3) 多人文字聊天
A. 可以在聊天室的所有人进行聊天。
(4) 聊天信息纪录管理
A. 可以把对所有人的对话保存在电脑的硬盘上;
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>