计算机网络课程设计 5
实现管理员对聊天室的管理和维护,包括聊天室的实时监测、用户的管理,不法信息的删除,基本要求可以完成群聊、私人聊天,实时发送和显示聊天信息,完成好友列表;进一步要求带表情,...
实现管理员对聊天室的管理和维护,包括聊天室的实时监测、用户的管理,不法信息的删除,基本要求可以完成群聊、私人聊天,实时发送和显示聊天信息,完成好友列表;进一步要求带表情,附件发送,聊天信息的加密传送,设置黑名单等。
2、用户注册自己的用户名后可登陆聊天室进行聊天
3、用户可进行对所有人的信息交流,也可进行私聊
(二)实现提示:
① TCP/IP数据通信 --- “聊天”消息传输格式
客户机 - 服务器
(ⅰ)传输“用户名”
STX+1+用户名+ETX
(ⅱ) 悄悄话
STX+2+用户名+”,”+内容+ETX
(ⅲ) 对所有人说
STX+3+内容+ETX
服务器- 客户机
(ⅰ)首次传输在线用户名
STX+1+用户名+ETX
(ⅱ)传输新到用户名
STX+2+用户名+ETX
(ⅲ)传输离线用户名
STX+3+用户名+ETX
(ⅳ)传输聊天数据
STX+4+内容+ETX
(注:STX为CHR(2),ETX 为CHR(3))
②服务器端
(ⅰ) 定义一个动态数组存储连接用户。定义一个全局变量存储连接用户的元素个数。
(ⅱ) 用一个使用UDP协议的SOCKET套接字完成发送服务器IP地址。
在该控件的数据接收事件中发送服务器IP地址
(ⅲ) 用一个使用TCP协议的SOCKET套接字数组完成TCP连接及数据发送和接收,处理它的连接请求事件。
(ⅳ)SOCKET套接字的数据到达事件中首先接收数据到一个变量中,然后从这个变量中逐个提取消息,并对每个消息判断消息类型及做相应处理:
case 类型1 ……传输“用户名”
修改用来存储连接用户的元素个数的数组
向所有在线用户发送该用户名消息
向该用户发送所有在线用户名的消息
case 类型2 ……悄悄话
向源和目标用户发送消息
case 类型3 ……对所有人说
向所有在线用户发送消息
(ⅴ) 服务器端的断开连接事件中
修改存储连接用户的元素个数的数组,卸载此控件,向所有在线用户发送消息离线。
③ 客户端
(ⅰ) 添加一个SOCKET套接字,窗体加载时使用UDP协议,发广播数据报;等待接收到服务器主机地址后使用TCP协议完成连接及数据传送。
(ⅱ) 在客户端的数据到达事件中接受数据,如果客户端协议使用的是UDP协议,关闭客户端连接,重新设置客户端的协议、远程端口号、本地端口等参数,再调用连接方法请求连接,输入用户名,连接成功时发送用户名消息。否则,从接受的数据字符串中逐个提取消息,并对每个消息判断消息类型及做相应处理:
case 类型1 ……首次传输在线用户名
将用户名加入到用户列表中;
case 类型2 ……首次传输在线用户名
将用户名加入到用户列表中;
在聊天内容中添加该用户名加盟;
case类型3 ……传输离线用户名
从用户列表中删除该用户名
在聊天内容中添加该用户名退出;
case类型4 ……传输聊天数据
在聊天内容中添加聊天数据;
(ⅲ) 在命令按纽触发事件中发送聊天内容
根据用户列表中的当前用户决定消息类型,并发送聊天数据。 展开
2、用户注册自己的用户名后可登陆聊天室进行聊天
3、用户可进行对所有人的信息交流,也可进行私聊
(二)实现提示:
① TCP/IP数据通信 --- “聊天”消息传输格式
客户机 - 服务器
(ⅰ)传输“用户名”
STX+1+用户名+ETX
(ⅱ) 悄悄话
STX+2+用户名+”,”+内容+ETX
(ⅲ) 对所有人说
STX+3+内容+ETX
服务器- 客户机
(ⅰ)首次传输在线用户名
STX+1+用户名+ETX
(ⅱ)传输新到用户名
STX+2+用户名+ETX
(ⅲ)传输离线用户名
STX+3+用户名+ETX
(ⅳ)传输聊天数据
STX+4+内容+ETX
(注:STX为CHR(2),ETX 为CHR(3))
②服务器端
(ⅰ) 定义一个动态数组存储连接用户。定义一个全局变量存储连接用户的元素个数。
(ⅱ) 用一个使用UDP协议的SOCKET套接字完成发送服务器IP地址。
在该控件的数据接收事件中发送服务器IP地址
(ⅲ) 用一个使用TCP协议的SOCKET套接字数组完成TCP连接及数据发送和接收,处理它的连接请求事件。
(ⅳ)SOCKET套接字的数据到达事件中首先接收数据到一个变量中,然后从这个变量中逐个提取消息,并对每个消息判断消息类型及做相应处理:
case 类型1 ……传输“用户名”
修改用来存储连接用户的元素个数的数组
向所有在线用户发送该用户名消息
向该用户发送所有在线用户名的消息
case 类型2 ……悄悄话
向源和目标用户发送消息
case 类型3 ……对所有人说
向所有在线用户发送消息
(ⅴ) 服务器端的断开连接事件中
修改存储连接用户的元素个数的数组,卸载此控件,向所有在线用户发送消息离线。
③ 客户端
(ⅰ) 添加一个SOCKET套接字,窗体加载时使用UDP协议,发广播数据报;等待接收到服务器主机地址后使用TCP协议完成连接及数据传送。
(ⅱ) 在客户端的数据到达事件中接受数据,如果客户端协议使用的是UDP协议,关闭客户端连接,重新设置客户端的协议、远程端口号、本地端口等参数,再调用连接方法请求连接,输入用户名,连接成功时发送用户名消息。否则,从接受的数据字符串中逐个提取消息,并对每个消息判断消息类型及做相应处理:
case 类型1 ……首次传输在线用户名
将用户名加入到用户列表中;
case 类型2 ……首次传输在线用户名
将用户名加入到用户列表中;
在聊天内容中添加该用户名加盟;
case类型3 ……传输离线用户名
从用户列表中删除该用户名
在聊天内容中添加该用户名退出;
case类型4 ……传输聊天数据
在聊天内容中添加聊天数据;
(ⅲ) 在命令按纽触发事件中发送聊天内容
根据用户列表中的当前用户决定消息类型,并发送聊天数据。 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询