没有合适的资源?快使用搜索试试~ 我知道了~
仿照飞秋设计的网络通信聊天室,报告内有详细的代码,代码和报告可以直接用
资源推荐
资源详情
资源评论
目录
1 课程设计的目的.....................................................................................1
2 课程设计正文.........................................................................................1
2.1 飞秋分析.......................................................................................1
2.2 飞秋的工作原理...........................................................................1
2.3 飞秋协议分析和实现方法...........................................................2
2.4 C/S 构架和 P2P 模式..................................................................4
2.5 套接字编程机制和方法..............................................................4
2.6 程序流程图..................................................................................5
2.7 局域网聊天软件设计...................................................................6
2.8 程序代码..................................................................................6
3 总结.......................................................................................................11
4 参考文献...............................................................................................12
1、课程设计的目的
进一步地巩固、加深和扩大套接字编程,Ethereal 抓包的使用方法和分析
能力,提高综合及灵活运用所学知识解决实际编程的能力。培养针对课题需要,
选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调
试的动手能力。通过对课题设计方案的分析、选择、比较、熟悉网络编程系统
开发、研制的过程、方法、内容及步骤。
2、课程设计正文
本设计以套接字编程为核心,学习局域网聊天软件工作原理和设计方法。
仿照飞秋、设计实现一个简单的局域网聊天软件,尽量能够做到与飞秋兼容。
主要任务是深入理解 TCP 和 UDP 的工作原理和服务的特性,掌握套接字
编程机制和方法;理解 C/S 架构和 P2P 两种应用模式;深入分析飞秋的功能、
工作原理、应用协议等;完成局域网聊天软件的分析、开发与调试;在设计报
告中对飞秋进行全面和深入的剖析;按照格式要求撰写设计报告。
2.1 飞秋分析
飞秋是一款局域网聊天传送文件的绿色软件,它参考了飞鸽传书(IPMSG)
和 QQ, 完全兼容飞鸽传书(IPMSG)协议,具有局域网传送方便,速度快,操作
简单的优点,同时具有 QQ 中的一些功能,是飞鸽的完善代替者,另外,飞秋支
持语音,远程协助群聊天(不需要服务器),它参考了飞鸽传书(FreeEIM)
和 QQ, 完全兼容飞鸽传书协议,具有局域网传送方便,速度快,操作简单的优
点,同时具有 QQ 中的一些功能。
2.2 飞秋的工作原理
上线通知:对于飞秋而言,最关键的是局域网用户列表的建立;飞秋启动
时使用 UDP 协议向 255.255.255.255 这个广播地址发送广播包 , 默 认 端 口 是
2425。广播包内容包含用户名、工作组、主机名、IP 等信息;已启动飞秋的用
户通过 2425 端口收到此广播包后,就会在自己的用户列表中添加这个用户的用
户名、工作组等信息,同时向对方 IP 发送本机用户的个人信息;从而双方都能
建立起用户列表。
聊天过程:飞秋在刷新用户列表时发送的广播包和启动时差不多,只不过
返回的标识信息略有不同;可以做一个小工具,监控 2425 端口内存流,就能截
获刷新和聊天时的消息。飞秋在传送聊天信息时同样使用 UDP 协议;由于 UDP
协议是无连接协议,传输速度快,但是没有确认机制,是不可靠的协议,需要
自己定义返回信息的标志来判断对方是否收到信息。
离线通知:用户离线时发送一个离线广播包到 255.255.255.255,收到此广
播包的用户,根据包中的 IP 地址(也可能是多种判断标志或者包含硬件标识,
比如网卡地址等)删除对方的用户列表信息;
广域网工作原理:飞秋在广域网中工作时,无法直接使用广播方式,靠手
工添加“局域网外广播列表”来建立相互的关系。
文件传输:飞秋传送文件是使用 TCP 协议,端口 2425。
2.3 飞秋协议分析和实现方法
前文中提到了飞秋完全兼容飞鸽传书(IPMSG)协议,下面介绍一下飞鸽传
书的协议。
1
飞鸽传书的 IP 信使使用 TCP/UDP 协议提供收发消息及文件。
其特性为 IP 信使能够安装在任何一个安装了 TCP/IP 协议栈的操作系统上,
使用在线用户的动态识别机制,可以和在线所有用户进行信息交换。
其运行机制使用 TCP/UDP 端口(默认端口为 2425),消息的收发使用 UDP
协议,文件(文件夹)的收发使用 TCP 协议。
飞鸽传书的命令字如下:
基本命令字(32 位命令字的低 8 位)
IPMSG_NOOPERATION 不进行任何操作
IPMSG_BR_ENTRY 用户上线
IPMSG_BR_EXIT 用户退出
IPMSG_ANSENTRY 通报在线
IPMSG_SENDMSG 发送消息
IPMSG_RECVMSG 通报收到消息
IPMSG_GETFILEDATA 请求通过 TCP 传输文件
IPMSG_RELEASEFILES 停止接收文件
IPMSG_GETDIRFILES 请求传输文件夹
选项位(32 位命令字的高 24 位)
IPMSG_SENDCHECKOPT 传送检查(需要对方返回确认信息)
IPMSG_FILEATTACHOPT 传送文件选项
附件类型命令(文件类型命令字的低 8 位)
IPMSG_FILE_REGULAR 普通文件
IPMSG_FILE_DIR 目录文件
IPMSG_FILE_RETPARENT 返回上一级目录
数据包格式为:包编号:发送者姓名:发送者主机名:命令字:附加信息
在飞鸽传书的协议中用户识别的具体方法为:当 IPMSG 启动时,命令
IPMSG_BR_ENTRY 被广播到网络中,向所有在线的用户提示一个新用户的到
达(即表示“我来了”);所有在线用户将把该新上线用户添加到自己的用户列表中,
并向该新上线用户发送 IPMSG_ANSENTRY 命令(即表示“我在线”);该新上线用
户接收到 IPMSG_ANSENTRY 命令后即将在线用户添加到自己的用户列表中。
在飞鸽传书协议中收发消息的具体方法为:使用 IPMSG_SENDMSG 命令
发送消息,消息内容添加在附加信息中;在接收消息时,如果对方要求回信确
认(IPMSG_SENDCHECKOPT 位打开),则需发送 IPMSG_RECVMSG 命令并将
对方发送的数据包的编号放在附加信息中一同发送至发送消息方
接收端开始接收文件时,请求传输文件命令 IPMSG_GETFILEDATA 将发送
到发送端的 TCP 端口(和 UDP 的发送端口相同),并将发送端发送的包编号:文件
序号:偏移量(全为十六进制格式)写到附加信息区一同发送,文件发送端接收到
该请求信息并进行校验正确后即开始发送文件(不使用任何格式,亦不进行加
密)。
当接收端接收到目录文件时,将发送附加信息区为发送端发送的包编号:文
件序号:偏移量(全为十六进制格式)的 IPMSG_GETDIRFILES 命令,以用来请求
传输目录文件;发送端则将头信息长度:文件名:文件大小:文件属性:文件内容添
加到附加信息区(除了文件名和文件内容外,其余皆为十六进制),头信息长度
是从头信息长度开始到文件内容前的‘:’分割符为止的字符个数。
当文件属性为 IPMSG_FILE_DIR 时,IPMsg 能够自动识别其为目录,下一
2
剩余12页未读,继续阅读
资源评论
jfpqc
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功