类似QQ的P2P聊天系统

上传人:我*** 文档编号:133335714 上传时间:2020-05-26 格式:PDF 页数:21 大小:1.05MB
返回 下载 相关 举报
类似QQ的P2P聊天系统_第1页
第1页 / 共21页
类似QQ的P2P聊天系统_第2页
第2页 / 共21页
类似QQ的P2P聊天系统_第3页
第3页 / 共21页
类似QQ的P2P聊天系统_第4页
第4页 / 共21页
类似QQ的P2P聊天系统_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《类似QQ的P2P聊天系统》由会员分享,可在线阅读,更多相关《类似QQ的P2P聊天系统(21页珍藏版)》请在金锄头文库上搜索。

1、一 一 需求分析需求分析 1 系统目的 通过计算机网络的课程设计 使学生了解掌握 TCP UDP 协议原理 了解 掌握应用协议设计的思想 掌握开发建立和管理计算机网络的方法 能熟 练地运用网络操作系统进行网络的建设和管理 培养学生自学能力和独立分析问 题 解决问题的能力包括学会自己分析解决问题的方法 对设计中遇到的问题 能通过独立思考 查阅工具书 参考文献 寻找解决方案 利用 Socket 套接字 进行网络通信 熟悉各种网络协议 实现基于服务器转发的任意多点间的数据共 享和交换 体会开发 建立于管理计算机网络的全部过程 掌握基于服务器客户 端机制的数据交换的实现思想及通信原理 掌握 TCP I

2、P 体系的结构及网络中的 通信方式 C S P2P 方式 培养学生计算机网络的应用能力 初步掌握计算机网 络分析与设计的基本方法 2 课程设计要求 分组 最多 4 人 组 内容 网络协议编程 语言 C 题目 点对点数据交换 P2P 实现基于服务器转发的任意多点间的数据共 享与交换 类似 P2P 的 QQ 聊天系统 有客户端和服务器端 服务器端记录当前在线客户列表 把客户列表发送给每一个在线客户 并实时刷新 任一个客户可以和任意其它的客户进行交互 即从在线客户列表中选 择一个或一组其它客户通过服务器转发彼此进行交互 包括信息交互 文件交互 3 操作流程 系统功能定义 系统界面设计 系统功能设计

3、C S 服务器通信线路信息流处理 调试程序 测试程序的健壮性 4 开发工具与开发平台 该软件在 Windows 7 VS2008 平台下开发完成并通过调试 二 二 总体设计总体设计 1 系统基本功能 1 当用户登陆进入聊天室之后 其 IP 会在在线用户列表里显示 2 通过选择用户后点击会话按钮弹出新窗口与其他在线用户进行即时通信 3 在聊天窗口时发送信息 点击发送按钮将信息发送出去 4 点击关闭按钮关闭当前装口 结束会话 2 系统架构 图 1 系统架构图 3 模块划分 图 2 客户模块 图 3 服务器模块 4 各个模块之间关系 各模块之间通过报文相互交互 均独立实现功能 但是在界面设计上有如上

4、图关 系用户列表 离线按钮 会话按钮在主界面上 其他各模块之间依赖事件响应机 制互相调用 三 三 详细设计详细设计 1 网络通信原理 1 面向连接的通信方式 在 TCP IP 网络中两个进程间的相互作用的主机模式是客户机 服务器模 式 Client Server model 该模式的建立基于以下两点 1 非对等作用 2 通信完全是异步的 2 客户机 服务器模式在操作过程中采取的是主动请示方式 首先服务器方 要先启动 并根据请示提供相应服务 过程如下 服务器 1 打开一通信端口并告知本地主机 它愿意在某一个公认地址上接收客户 请求 2 等待客户请求到达该端口 3 接收到重复服务请求 处理该请求并

5、发送应答信号 4 返回第二步 等待另一客户请求 5 关闭服务器 客户方 1 打开一通信通道 并连接到服务器所在主机的特定端口 2 向服务器发送服务请求报文 等待并接收应答 继续提出请求 3 请求结束后关闭通信通道并终止 2 流程 1 客户端 图 4 客户端流程图 2 服务器端 图 5 服务器端程序流程图 3 客户端与服务器端交互 图 6 服务器客户交互图 3 数据结构 1 通信节点 Point 客户名称 Account 客户 IP 地址 IpAddress 客户端口 Port 2 报文 packet 图 7 通信报文 图 8 登陆报文 图 9 离线报文 图 10 消息报文 图 11 更新在线客

6、户列表报文 报文类型 type 报文类型 type 有 login 登陆 off 离线 update 更新在线客户列表 msg 消息 报文源点 source Point 报文源点结构 sourceAccount sourceIPAddress sourcePort 报文目的节点 destinationList 报文目的节点结构 destionationAccount destinationIp destinationPort destionationAccount des tinationIp destinationPort destionationAccount destinationIp

7、destinationPort 报文内容 content 报文格式 type source destinationList content 即分为四段 类型 源 信息 目的信息 正文 每段之间用 号分隔 在目的信息这段中 若有 多个目的地 则每个目的地信息之间用分号分隔 如 目的 1 信息 目 的 2 信息 目的 N 信息 每个目的信息以及源信息携带 3 个字段用 户名 IP 地址 端口他们用逗号分隔 如 用户名 IP 地址 端口 4 协议结构 TCP 协议 TCP 协议的实现采用 C 提供的 Socket 套接字其具体实现如下 1 创建套接字 socket 功能 使用前创建一个新的套接字 格

8、式 SOCKET PASCAL FAR socket intaf inttype intprocotol 参数 af 通信发生的区域 type 要建立的套接字类型 procotol 使用的特定协议 2 指定本地地址 bind 功能 将套接字地址与所创建的套接字号联系起来 格式 int PASCAL FAR bind SOCKET s conststructsockaddr FAR name intnamelen 参数 s 是由 socket 调用返回的并且未作连接的套接字描述符 套接字 号 其它 没有错误 bind 返回 0 否则 SOCKET ERROR 地址结构说明 3 建立套接字连接 c

9、onnect 和 accept 功能 共同完成连接工作 格式 int PASCAL FAR connect SOCKET s SOCKET PASCAL FAR accept 4 监听连接 listen 功能 用于面向连接服务器 表明它愿意接收连接 格式 int PASCAL FAR listen 5 数据传输 send 与 Receive 功能 数据的发送与接收 格式 int PASCAL FAR send Byte sendInfo int PASCAL FAR Receive Byte recInfo 由于需要实现服务器转发 所以客户端发送的消息必须先封装再发送 4 C S 信息 图 1

10、2 C S 信息交互图 5 通信过程程序设计 图 13 C S 通信过程程序设计图 四 四 系统实现系统实现 1软件运行过程 1 图 14 服务器主界面开启 2 图 15 配置服务器 3 图 16 配置完成启动服务器 4 5 图 17 用户登陆界面 图 18 配置客户端 6 图 19 三个用户登陆后服务器列表更新 7 图 20 用户 1 给用户 3 发送信息 hello world 8 图 21 用户 3 接收到用户 1 消息 9 图 22 用户 1 群发给用户 2 用户 3 消息 this is my program 10 图 23 用户 2 接收到该群发消息 11 图 24 用户 3 接收

11、到该群发消息 12 图 25 用户 2 离线后客户端用户列表更新 13 图 26 用户 2 离线后服务器端用户列表更新 14 图 27 服务器停止用户列表清空 2 编码实现 部分 1 节点类 publicclassPoint privatestring account publicstring Account get return account set account value privatestring ipAddress publicstring IpAddress get return ipAddress set ipAddress value privatestring port

12、publicstring Port get return port set port value privatebool isSelected publicbool IsSelected get return isSelected set isSelected value 2 报文封装 publicList ResolveDestination string packet List pointList newList string msgArr packet Split if msgArr Length 4 string destArr msgArr 2 Split newchar Strin

13、gSplitOptions RemoveEmptyEntries foreach string dest in destArr string destInfo dest Split newchar StringSplitOptions RemoveEmptyEntries if destInfo Length 3 Point destPoint newPoint destPoint Account destInfo 0 destPoint IpAddress destInfo 1 destPoint Port destInfo 2 pointList Add destPoint return

14、pointList 3 服务器监听客户端请求 publicvoid recieveLogin Socket listener newSocket AddressFamily InterNetwork SocketType Stream ProtocolType Tcp listener Bind newIPEndPoint IPAddress Any int Parse serPort Text listener Listen 10 while true 服务器监听 如有客户登陆 向下执行 Socket socket listener Accept byte messRec newbyte 1

15、024 int numBytes socket Receive messRec socket Shutdown SocketShutdown Both socket Close if numBytes 0 string replyMes Encoding UTF8 GetString messRec 0 numBytes string type ResolveType replyMes if type login 添加该客户在线客户列表中后 向每一个在线的客户发送新的客户列表信息 Point newPoint ResolveSource replyMes clientList Add newP

16、oint 加载客户列表 BeginInvoke newShowClientListDelegate ShowClientList newobject clientList string message string Empty foreach Point c in clientList message string Format 0 1 2 c Account c IpAddress c Port string packet PackageInfo update serPoint null message foreach Point p in clientList Socket sender newSocket AddressFamily InterNetwork SocketType Stream ProtocolType Tcp IPEndPoint destPoint newIPEndPoint IPAddress Parse p IpAddress int Parse p Port sender Connect destPoint byte cliBuffer Encoding

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号