为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

基于TFT屏的飞鸽传书

2017-10-27 50页 doc 223KB 15阅读

用户头像

is_721103

暂无简介

举报
基于TFT屏的飞鸽传书基于TFT屏的飞鸽传书 本科学生毕业论文(设计) 基于TFT屏的飞鸽传书题目(中 文): (英 文): Feiq based on TFT screen 姓 名 学 号 院 (系) 电子工程系 专业、年级 电子信息工程 级 指导教师 I 湖南科技学院本科毕业论文(设计)诚信声明 本人郑重声明:所呈交的本科毕业论文,设计,~是本人在指导老师的指导下~独立进行研究工作所取得的成果~成果不存在知识产权争议~除文中已经注明引用的内容外~本论文不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要...
基于TFT屏的飞鸽传书
基于TFT屏的飞鸽传书 本科学生毕业论文() 基于TFT屏的飞鸽传书题目(中 文): (英 文): Feiq based on TFT screen 姓 名 学 号 院 (系) 电子工程系 专业、年级 电子信息工程 级 指导教师 I 湖南科技学院本科毕业论文(设计)诚信声明 本人郑重声明:所呈交的本科毕业论文,设计,~是本人在指导老师的指导下~独立进行研究工作所取得的成果~成果不存在知识产权争议~除文中已经注明引用的内容外~本论文不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。 本科毕业论文,设计,作者签名: 年 月 日 I 毕业论文(设计)任务书 课题名称: 基于TFT屏的飞鸽传书 学生姓名: 系 别: 电子工程系 专 业: 电子信息工程 指导教师: I 湖南科技学院本科毕业论文(设计)任务书 1、主题词、关键词: TFT;飞鸽传书;局域网通信;聊天;socket 2、毕业论文(设计)内容要求: 1) 系统概述。 2) 总体设计。 3) 主要网络协议介绍。 4) 软件设计。 5) 各功能模块架构框图。 6) 程序及功能说明。 7) 系统测试。 8) 总结。 A 3、文献查阅指引: [1] AndrewS.Tanenbaum. 计算机网络[M]. 北京: 清华大学出版社, 2008: 448-474. [2] 牛世章. 用CasynSocket类实现网络通信[J]. 中央民族大学学报, 2012(4): 1-3. [3] 张凯. TCP/IP网络通信协议的实现与探讨[J]. 网络与信息. 2008(9): 1-2. [4] Douglas E.Comer. TCP/IP 网络互连技术[M]. 北京: 清华大学出版社, 2006: 356-423. [5] 周学毛. 新编C语言程序设计教程[M]. 西安: 西安电子科技大学出版社, 2004: 77-123. [6]王远洋, 周渊平, 郭焕丽. Linux下基于socket多线程并发通信的实现[J]. 计算机信息, 2009(15): 13-27. [7] Neil Matthew,Richard Stones. Linux 程序设计[M]. 北京: 人民邮电出版社,2010: 513-545. [8] Michael J.Donahoo,Kenneth L.Calvert. TCP/IP Sockets in C[M]. John Wiley & Sons,Inc,2010: 53-79. [9] Stephen Prata. C Primer Plus[M]. Sams Publishing, 2005: 115-421. [10] Stephen Prata. Unix Primer Plus[M]. Sams Publishing,2009: 153-221. 4、毕业论文(设计)进度安排: 第一阶段:2012年11月1日,根据自身兴趣和专业知识进行选题。 第二阶段:2012年12月25日,开题。 第三阶段:2013年3月5日,设计软件架构,写出程序,调试并验证。 第四阶段:2013年 4月8日,毕业论文中期检查。 第五阶段:2013年 4月20日,写出论文初稿。 第六阶段:2013年5月8日,毕业论文定稿。 第七阶段:2013年 5月18日,完成论文答辩。 教研室意见: 负责人签名: 注:本任务书一式三份~由指导教师填写~经教研室审批后一份下达给学生~一份交指导教师~一份留系里存档。 B 湖南科技学院本科毕业论文(设计)开题报告书 论文(设计)题目 基于TFT屏的飞鸽传书 作 者 姓 名 贺鹏 所属系、专业、年级 电子工程系 电子信息工程专业2009年级 10000 2012.12.25 指导教师姓名、职称 何红松 讲师 预计字数 开题日期 选题的根据:1)说明本选题的理论、实际意义 2)综述国内外有关本选题的研究动态和自己的见解 1) 传统的网络通信软件大多需要借助Internet 上的服务器,这样产生了很多问题,如浪费网络资源、遭遇到网络攻击、传播的病毒、破坏防御系统等等。为了方便内部网络的用户之间的沟通,需要开发一个基于局域网的信息收发系统的即时通讯工具,根据当前网络技术中的TCP/IP协议,UDP/IP协议,socket通信方式等等,可以实现在内部网络中进行信息的交流。 2) 近年来,国内网络通讯软件技术上得到迅速发展,性能不断完善,功能不断增强,朝着高效率、高稳定、高可靠性及安全性等方向迅速发展。但比起国外,我们仍处于起步晚、高度低,技术创新能力薄弱的状况,高端网络通信软件明显落后于发达工业国家。针对这种情况,我们应当不断提高自己在网络通信软件方面的开发能力,朝着高能、高端的方向不断努力。 主要内容: 1、 介绍选题背景。 2、 对当前局域网内信息传输进行需求分析。 3、 根据需求分析提出解决方案。 4、 按照解决方案对整个软件架构进行设计。 5、 编写软件程序。 6、 测试并得到测试结果。 7、 总结。 研究方法: (1) 查看相关资料并对资料进行理论分析总结,理清功能实现的整个流程; (2) 与同学讨论,向老师请教,深入理解功能实现的理论原理; (3) 以具体问题为中心,建立整个软件架构框图; (4) 测试,对自己提出的方案进行陈述、论证、总结 。 C 完成期限和采取的主要措施: 2012年12月25日开题,2013年5月8日定稿,2013年5月18日前完成答辩; 1. 通过实际事情提出问题,查阅资料,找出问题所在; 2. 与老师、同学交流,及时向老师汇报进度; 3. 查找资料,深入思考,提出方案,解决问题; 4. 通过测试形式验证方案可行性及正确性。 主要参考资料: [1] AndrewS.Tanenbaum. 计算机网络[M]. 北京: 清华大学出版社, 2008: 448-474. [2] 牛世章. 用CasynSocket类方法实现网络通信[J]. 中央民族大学学报, 2012(4): 1-3. [3] 张凯. TCP/IP网络通信协议的实现与探讨[J]. 网络与信息. 2008(9): 1-2. [4] Douglas E.Comer. TCP/IP 网络互连技术[M]. 北京: 清华大学出版社, 2006: 356-423. [5] 周学毛. 新编C语言程序设计教程[M]. 西安: 西安电子科技大学出版社, 2004: 77-123. [6] 王远洋, 周渊平, 郭焕丽. Linux下基于socket多线程并发通信的实现[J]. 计算机信息, 2009(15): 13-27. [7] Neil Matthew,Richard Stones. Linux 程序设计[M]. 北京: 人民邮电出版社,2010: 513-545. [8] Michael J.Donahoo,Kenneth L.Calvert. TCP/IP Sockets in C[M]. John Wiley & Sons,Inc,2010.53-79. [9] Stephen Prata. C Primer Plus[M]. Sams Publishing, 2005: 115-421. [10] Stephen Prata. Unix Primer Plus[M]. Sams Publishing,2009: 153-221. 指导教师意见: 指导教师签名: 教研室意见: 签 名: 年 月 日 D 开 题 报 告 会 纪 要 时间 2012年12月25日 地点 三教517 与 姓 名 职务(职称) 姓 名 职务(职称) 姓 名 职务(职称) 会 包本刚 教授 宫彦军 教授 陈爱武 讲师 人 何红松 讲师 游珍珍 讲师 贾竹君 讲师 员 会议摘要: 1、 论题研究的意义 答:传统的聊天软件大多需要借助Internet 上的服务器,这样会有较多问题,如浪费网络 资源、 遭遇到网络攻击、传播的病毒、破坏防御系统等等。为方便内部网络的用户之间的沟 通,需开发一个局域网的信息收发系统的即时通讯工具,实现在内部网络中进行信息的交流。 本设计就是针对这一问题展开的,最终实现局域网内文字聊天信息和文件、文件夹传输的简单 功能。 2、 论题的背景 答:虽然网络的使用频率与范围都越来越广泛,但是人们使用网络的用途主要的还是只有两 个:(1)相互之间的沟通;(2)资源共享。 局域网作为网络的一个重要组成部分,它不但是用户 与外界连接的枢纽,同时也是近距离用户之间沟通与资源共享的一个重要途径。 3、 你设计的飞鸽传书是通过什么技术来实现不同机器间通信的, 答:通过网络通信中TCP/IP协议,UDP/IP协议和socket通信方式来实现的。 会议主持人: 记 录 人: 年 月 日 指系导 部 小 组意 意负责人签名: 负责人签名: 见 见 年 月 日 年 月 日 注:此表由学生本人填写,一式三份,一份留系里存档,指导老师和本人各保存一份 E 湖南科技学院毕业论文(设计)中期检查表 毕业论文(设计) 基于TFT屏的飞鸽传书 题 目 学生姓名 贺 鹏 学 号 200906002408 系 别 电子工程系 专 业 电子信息工程 指导教师 何红松 检查日期 2013.4.8 指导教师检查情况记载及修改意见: 检查情况记载: 1、已查阅各种相关资料,对相关知识有一定的了解和掌握; 2、论文内容较为合理; 3、软件架构欠佳,运行速度会很慢; 4、图纸、表格较多为复印件; 5、参考文献书写不规范。 修改意见: 1、 内容比较少,需要增加内容; 2、 注意论文格式,请参照湖南科技学院毕业论文设计模版; 3、 参考文献按照学校的规范去书写; 4、 尽量突出说明你自己所做的工作,突出自己的独特之处; 5、 摘要内容应包括研究的目的、方法、结果和结论; 6、 按照毕业论文撰写规范排版。 签名: 注:此表用于指导教师在学生毕业论文,设计,初稿完成后对学生执行任务书情况进行中期检查时用~由指导教师 填写。 F 湖南科技学院毕业设计(论文)指导过程记录表 毕业论文(设计)题目 基于TFT屏的飞鸽传书 学生姓名 贺鹏 学号 200906002408 专业班级 电信0904 指导教师 何红松 职称 讲师 系(教研室) 电子工程系 指 选题指导: 根据自己所学专业和特长~选择一个通过查阅资料和自己的努力~既能做指导内容 得来又有一定深度~能反映出自己学术水平的题目。 记录(一) 学 生 签 名: 年 月 日 指导教师签名: 年 月 日 导 查阅资料指导: 1、到图书馆查找和借阅与选题有关的文献和资料, 指导内容 2、从网上检索和下载与选题有关的文献和资料。 记录(二) 学 生 签 名: 年 月 日 指导教师签名: 年 月 日 过 论文开题指导: 1、题目应该简短、明确、有概括性, 2、摘要内容应包括研究的目的、方法、结果和结论, 3、关键词应采用能覆盖论文主要内容的通用词条, 指导内容 记录(三) 程4、正文一般应包括绪论、论文主体及结论等部分, 5、结论是毕业论文的总结~要求精炼、准确地概述全文的主要观点。 学 生 签 名: 年 月 日 指导教师签名: 年 月 日 论文写作指导: 记主体的内容应包括以下几个方面: 1、毕业论文总体方案设计与选择的论证, 指导内容 记录(四) 2、对本研究内容进行较全面、客观的理论阐述~应着重指出本研究内容中 的创新、改进与实际应用之处。 学 生 签 名: 年 月 日 录 指导教师签名: 年 月 日 G 论文中期检查指导: 指 1、加强对选题核心思想的理解, 指导内容 2、参考更多的资料~丰富论文内容, 记录(五) 3、尽量突出说明你自己所做的工作~突出自己的独特之处。 学 生 签 名: 年 月 日 导 指导教师签名: 年 月 日 论文初稿修改指导: 1、将不清晰的图纸重绘, 指导内容 2、图、表都采用上下包围型插入~将多余的部分剪去~居中~压缩到与页 记录(六) 面的文字等宽。 过学 生 签 名: 年 月 日 指导教师签名: 年 月 日 论文定稿修改指导: 1、按照毕业论文撰写规范排版, 指导内容 程 2、参考文献按学校的毕业论文撰写规范写~且要有2篇以上外文参考文献。 记录(七) 学 生 签 名: 年 月 日 指导教师签名: 年 月 日 论文答辩指导: 记1、制作一个能反映论文主要内容~可放映5,10分钟的ppt 演示文稿~作 指导内容 答辩陈述用, 记录(八) 2、掌握研究内容的实际意义、设计原理、工作过程等主要内容。 学 生 签 名: 年 月 日 录 指导教师签名: 年 月 日 答辩小组组长 意见 组长(签名): 年 月 日 注:本表与毕业论文一起装订存档。 H 湖南科技学院本科毕业论文,设计,评审表 论文题目 基于TFT屏的飞鸽传书 作者姓名 所属系、专业、年级 电子工程 系 电子信息工程 专业 2009年级 贺 鹏 指导教师 字 数 定稿日期 8000 2013.5.8 何红松 讲师 姓名、职称 在当今,网络通讯已经不算新鲜事物,但大多数网络通讯都需要借 助Internet上的服务器,这就给那些具有大规模内部网络的用户造成了中 许多问题,如浪费网络资源、遭遇到网络攻击、传播的病毒、破坏防御 系统等等。由于互连网上的网络通讯工具给企业内部信息交流带来了不 便,所以为了方便内部网络的用户之间的沟通,需要开发一个基于局域文 网的信息收发系统的即时通讯工具。这篇论文的目标是设计一个类似QQ 软件的局域网通信软件。本设计以C 编写,能在windows XP/7等环境下 运行。设计共分为五大模块,分别是:首先,介绍选题背景及意义;其摘 次,简单介绍TCP/IP协议;再次,需求分析并提出解决方案;然后,根 据解决方案对系统进行设计;最后,测试并得到测试结果。 要 关键词 TFT;飞鸽传书;局域网通信;聊天;socket ,3-5个, The network communication is already not the new things now, but the majority network communication all need to be supported by the server on the Internet. this make those user who are in the large-scale internal network in trouble, such as waste of network resources, network attack, virus 英 dissemination, destruction of defense system and so on. Because the interconnection network communication facilities on the interior communication brought inconvenience for the enterprise, in order to facilitate 文 internal communication between network users, we needs to develop one instant communication facility of instant information receiving and dispatching system based on the local area network. This purpose of the paper is to design the local area network communication software like QQ. The 摘 software is developed by C program which can work in windows XP/7. The design consists of five big modules: First, introduction of background and significance of the paper; Second,simply introduction of the TCP/IP protocol;Third, analysis of requirement and looking for solution; Fourth, 要 designing the system according to the solution; Fifth, test the system and obtains the test result. TFT;Feiq Messenger;communication in LAN;chat;socket 关键词 (3-5个) 指导教师评定成绩 I 评审指导教师 评审要素 评审内涵 满分 基元 实评分 选题符合专业培养目标~体现学科、专业特点和教学目的明确 计划的基本要求~达到毕业论文,设计,综合训练的10 符合要求 目的。 选题 符合本学科的理论发展~有一定的学术意义,对经济建质量理论意义或 设和社会发展的应用性研究中的某个理论或方法问题进10 实际价值 25% 行研究~具有一定的实际价值。 选题恰当 题目规模适当~难易度适中,有一定的科学性。 5 查阅文献 能独立查阅相关文献资料~归纳总结本论文所涉及的10 资料能力 有关研究状况及成果。 综合运用 能运用所学专业知识阐述问题,能对查阅的资料进行整10 知识能力 理和运用,能对其科学论点进行论证。 能力研究方案的 整体思路清晰,研究方案合理可行。 5 设计能力 水平 能运用本学科常规研究方法及相关研究手段,如计算机、40% 研究方法和手实验仪器设备等,进行实验、实践并加工处理、总结信10 段的运用能力 息。 外文应用 能阅读、翻译一定量的本专业外文资料、外文摘要和外5 能力 文参考书目,特殊专业除外,体现一定的外语水平。 文题相符 较好地完成论文选题的目的要求。 5 论文写作水平 论点鲜明,论据充分,条理清晰,语言流畅。 15 质量符合学术论文的基本要求。用语、格式、图表、数据、量写作规范 10 和单位、各种资料引用规范化、符合。 35% 论文篇幅 10000字左右。 5 实评总分 成绩等级 指导教师评审意见: 指导教师签名: 说明:评定成绩分为优秀、良好、中等、及格、不及格五个等级~实评总分90—100分记为优秀~80—89分记为良好~70—79分记为中等~60—69分记为及格~60分以下记为不及格。 评阅教师评定成绩 J 评审评阅教师 评审要素 评审内涵 满分 基元 实评分 选题符合专业培养目标~体现学科、专业特点和教学目的明确 计划的基本要求~达到毕业论文,设计,综合训练的10 符合要求 目的。 选题 符合本学科的理论发展~有一定的学术意义,对经济建质量理论意义或 设和社会发展的应用性研究中的某个理论或方法问题进10 实际价值 25% 行研究~具有一定的实际价值。 选题恰当 题目规模适当~难易度适中,有一定的科学性。 5 查阅文献 能独立查阅相关文献资料~归纳总结本论文所涉及的10 资料能力 有关研究状况及成果。 综合运用 能运用所学专业知识阐述问题,能对查阅的资料进行整10 知识能力 理和运用,能对其科学论点进行论证。 能力研究方案的 整体思路清晰,研究方案合理可行。 5 设计能力 水平 研究方法和能运用本学科常规研究方法及相关研究手段,如计算机、40% 手段的运用实验仪器设备等,进行实验、实践并加工处理、总结信10 能力 息。 外文应用 能阅读、翻译一定量的本专业外文资料、外文摘要和外5 能力 文参考书目,特殊专业除外,体现一定的外语水平。 文题相符 较好地完成论文选题的目的要求。 5 论文写作水平 论点鲜明,论据充分,条理清晰,语言流畅。 15 质量符合学术论文的基本要求。用语、格式、图表、数据、量写作规范 10 和单位、各种资料引用规范化、符合标准。 35% 论文篇幅 10000字左右。 5 实评总分 成绩等级 评阅教师评审意见: 评阅教师签名: 说明:评定成绩分为优秀、良好、中等、及格、不及格五个等级~实评总分90—100分记为优秀~80—89分记为良好~70—79分记为中等~60—69分记为及格~60分以下记为不及格。 K 湖南科技学院本科毕业论文,设计,答辩记录表 论文题目 基于TFT屏的飞鸽传书 作者姓名 贺 鹏 所属系、专业、年级 电子工程系 电子信息工程专业 2009年级 指导教师 何红松 讲师 姓名、职称 答 辩 会 纪 要 时间 2013.05.18 地点 三教517 答 姓 名 职务(职称) 姓 名 职务(职称) 姓 名 职务(职称) 辩 包本刚 教授 宫彦军 教授 陈爱武 讲师 小 何红松 讲师 游珍珍 讲师 贾竹君 副教授 组 成 员 答辩中提出的主要问题及回答的简要情况记录: 1. 为什么文字信息传输选择UDP协议,而文件、文件夹传输选择TCP协议, 答:因为UDP协议是面向无连接的,传输速度快、效率高,虽然可靠性不高,但文字信息在传输过程中出错率很小,所以选择UDP协议;TCP协议是面向连接的,可靠性很高,效率和速度稍低,可文件、文件夹在传输过程中容易出错,所以选择TCP协议。 2. 开发板A8上的飞鸽传书和PC机上飞鸽传书的运行速度不一样对信息传输会有影响吗, 答:因为首先,开发板A8和PC机上CPU的运行速度远比信息传输的速度要快得多;其次,在程序中有while(1)循环和listen,accept函数,不停的检测信息的发送和接收,假如没有信息就会阻塞,一直等到有信息到来为止,所以开发板A8和PC机上飞鸽传书的运行速度不一样对信息传输不会有影响。 3. 在这个软件中为什么要使用socket通信方式,而不是用其他网络通信方式, 答:因为这次通信针对的是PC机和开发板A8之间,它们具有不同的IP地址,所以不能用其他的网络通信方式。 会议主持人: 记 录 人: 年 月 日 L 评语: 答 辩 小 组 意 见 评定等级: 负责人(签名): 年 月 日 评语: 系 学 位 委 员 会 意 见 论文(设计)最终评定等级: 负责人(签名): 系部(公章) 年 月 日 评语: 校 学 位 委 员 会 评定等级: 意 负责人(签名): 年 月 日 见 M 目录 绪论 ...........................................................................................................................4 .......................................................................................................................5 1 引言 1.1 本课题主要研究思路和方法 .......................................................................5 1.2 研究项目的目的以及意义 ...........................................................................5 1.3 Socket 的寻址方式.......................................................................................5 2 系统需求分析 ........................................................................................................7 2.1 系统设计目标 ..............................................................................................7 2.2 系统总体需求分析 ......................................................................................7 2.3 组织结构的分析 ..........................................................................................7 2.3.1 开发运行环境.....................................................................................8 2.3.2 系统开发语言.....................................................................................8 3 理论知识 ...............................................................................................................9 3.1 C/S 软件架构技术 .......................................................................................9 3.2 用户数据报协议(UDP) ................................................................................9 3.3 单播、广播、组播浅析 ...............................................................................9 4 系统设计 ............................................................................................................. 11 4.1 软件的整体构架框图和程序 ..................................................................... 11 4.2 文字和文件传输模块的主要流程图和程序 .............................................. 18 4.3 系统的主要功能模块 ................................................................................. 21 4.4 文字聊天信息的封装 ................................................................................. 24 5 系统测试 ............................................................................................................. 25 6 结 论 ................................................................................................................... 27 7 致 谢 ................................................................................................................. 28 8 参考文献 ............................................................................................................. 29 1 基于TFT屏的飞鸽传书 摘 要 在当今,网络通讯已经不算新鲜事物,但大多数网络通讯都需要借助Internet上的服务器,这就给那些具有大规模内部网络的用户造成了许多问题,如浪费网络资源、遭遇到网络攻击、传播的病毒、破坏防御系统等等。由于互连网上的网络通讯工具给企业内部信息交流带来了不便,所以为了方便内部网络的用户之间的沟通,需要开发一个基于局域网的信息收发系统的即时通讯工具。这篇论文的目标是设计一个类似QQ软件的局域网通信软件。本设计以C 编写,能在windows XP/7等环境下运行。设计共分为五大模块,分别是:首先,介绍选题背景及意义;其次,简单介绍TCP/IP协议;再次,需求分析并提出解决方案;然后,根据解决方案对系统进行设计;最后,测试并得到测试结果。 【关键词】TFT;飞鸽传书;局域网通信;聊天;socket 2 Feiq based on TFT screen Abstract The network communication is already not the new things now, but the majority network communication all need to be supported by the server on the Internet. this make those user who are in the large-scale internal network in trouble, such as waste of network resources, network attack, virus dissemination, destruction of defense system and so on. Because the interconnection network communication facilities on the interior communication brought inconvenience for the enterprise, in order to facilitate internal communication between network users, we needs to develop one instant communication facility of instant information receiving and dispatching system based on the local area network. This purpose of the paper is to design the local area network communication software like QQ. The software is developed by C program which can work in windows XP/7. The design consists of five big modules: First, introduction of background and significance of the paper; Second,simply introduction of the TCP/IP protocol;Third, analysis of requirement and looking for solution; Fourth, designing the system according to the solution; Fifth, test the system and obtains the test result. 【Key words】TFT; Feiq Messenger; communication in LAN; chat; socket 3 绪论 随着计算机和通讯技术的发展,计算机的网络化已经渗透到各个应用领域,尤其是以TCP/IP协议之间的网络互连发展很快,计算机应用系统的开发由传统的单机方式转向到了网络环境的开发。大部分编程语言都提供了基于 Linux Sockets 网络编程接口的socket 控件,它使开发TCP/IP 通讯变得简单方便。 网络之间进行数据通讯时,使用地址来标识网络中的计算机,有了地址以后,数据才会准确地发送到地址所指向的计算机。TCP/IP 协议使用IP 地址为网络中计算机进行标识,而且每台计算机的 IP 地址是唯一的,一般情况下,每台计算机运行的程序不止一个,因此要在应用程序中建立连接的话,还需要一个地址标识。 在TCP/IP协议书中使用端口(PORT)作为计算机上运行的应用程序的标识,因此TCP/IP协议中一个有效的网络地址包括IP地址和端口地址两个部分。 TCP/IP协议提供了两种计算机之间的通讯方式:TCP 方式和UDP 方式。TCP 是一种面向连接的服务,在文件传输时会先行建立连接,通过链接提供双向、有序且无重复的数据流服务、以及流量控制、差错检测和纠错等服务,从而确保文件传输的正确性;UDP 则是一种无连接的服务,它在传输文件时不会确保传输端的文件能够正确无误的传送到接收端,所以当使用UDP 时,通常要自己作接收确认的工作。 随着当今时代由工业经济渐渐转为知识经济、信息经济,信息的需求量的不断增加,促使了计算机通信的日新月异~虽然网络的使用频率与使用的范围都越来越广泛,但是人们使用网络的用途主要的还是只有两个:(1)相互之间的沟通。(2)资源共享。局域网作为网络的一个重要组成部分,它不但是用户与外界连接的枢纽,同时也是近距离用户之间沟通与资源共享的一个重要途径。在这种情况下,如何使局域网内的用户便捷的沟通,快速的资源共享,也就成为了人们对网络研究的重点之一。 4 1 引言 1.1 本课题主要研究思路和方法 本系统的开发采用基于socket 的发送模式,进行文字聊天和文件、文件夹传输的设计与开发。因此,本设计首先分析该系统的相关功能,结合本设计的相关要求写出需求分析;其次,综合运用以前所学的相关知识,选择所熟悉的开发工具进行本设计的开发;在设计中以需求分析为基础,写出系统开发计划、实现流程及相关问题的实现方法;最后,在系统开发完毕后,进行测试,做好测试的相关记录。 1.2 研究项目的目的以及意义 随着互联网技术的迅猛发展,网络给人们带来了很多便利,比如人们借助网络进行相互交流变得更加方便。聊天工具作为互联网中运用最为广泛的通信工具之一,如今都已被广大网民接受。腾讯软件为聊天软件,发展到现在已经具有了很多功能:有文字聊天、文件、文件夹传输的基本功能,也一些复杂的功能。本毕业设计主要是为了检查学生综合运用以前所学知识的能力,模拟腾讯软件,开发一个局域网内聊天系统软件,主要实现局域网内文字聊天及文件传输等功能。 1.3 Socket 的寻址方式 因为Linux socket 要兼容多个协议,所以必须使用通用的寻址方式。TCP/IP协议使用地址和端口号来指定一个地址,但是其它协议也许采用不同的形式。如果socket强迫使用特定的寻址方式,添加其他协议就不大可能了。在socket中,应用程序员通过SOCKADDR_IN 结构来指定IP地址和端口号。 定义如下: struct sockaddr_in { short sin_family; u_short sin_port; struct in_addr sin_addr; har sin_zero[8]; }; 应用程序可以使用inet_addr 函数将一个小数点分隔的十进制IP地址字符串转化 5 成由32 位二进制数表示的IP地址。inet_ntoa函数将一个网络字节顺序的32位 IP地址转化字符串。 6 2 系统需求分析 2.1 系统设计目标 根据对飞鸽传输系统的调研,我认为本设计需要满足以下几个系统设计目标:(1)实用性原则:真正为局域网的实际工作服务,按照需求的轻重缓急,合理设计本系统。(2)可靠性原则:必须为用户提供安全的服务,尤其是要保证传输的稳定性。(3)友好性原则:使用本系统的用户相当一部分对计算机知识了解很少,所以系统操作上要求简单方便,便于用户掌握。(4)可扩展性原则:采用开放的标准和接口,便于系统向更大的规模和功能扩展。 2.2 系统总体需求分析 本系统分为两个子系统:(1)局域网内简单文字聊天子系统,它是在局域网内选择相应的用户,以便对之发送文字信息。(2)文件、文件夹传输系统,它是在先把需要传输的文件、文件夹转换成相应的数据流,到了目的机器再将之还原。本系统的文字聊天系统实现的功能类似于,,聊天功能。用户使用的过程为,先是用户开启飞鸽传书软件,软件自动检索局域网内其它用户,并生成好友列表,让用户选择。当用户发现所要连接的用户之后,双击该用户,则出现发送窗口。用户用之来发送消息或者文件。接收方可以选择接收或者拒绝相应的传输文件。 2.3 组织结构的分析 以下为组织结构图: 7 2.3.1 开发运行环境 开发此系统所需的基本软、硬件环境为:(1)WindowsXP或者Windows7;(2)Pentium100 及以上档次的IBM PC 及其兼容机;(3)128M 以上内存措施; (4)1G 以上可用硬盘空间。 2.3.2 系统开发语言 本系统采用 C语言开发。C/C++是前些年迅速发展和推广的一种计算机语言,近年来,已经相当的完善。它主要特点有两个方面:一是全面兼容C。二是支持面向对向的方法。 8 3 理论知识 3.1 C/S 软件架构技术 C/S(Client/Server)结构,即大家熟知的客户机/服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到 Client 端和Server 端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server 形式的两层结构,由于现在的软件应用系统正在向分布式的Web 应用发展,Web和Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client 端还是Server 端都还需要特定的软件支持。由于没能提供用户真正期望的开放环境,C/S 结构的软件需要针对不同的操作系统开发不同版本的软件,加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。 3.2 用户数据报协议(UDP) UDP(User Datagram Protocol):用户数据包协议,它和TCP一样位于传输层,和IP协议配合使用,在传输数据时省去包头,但它不能提供数据包的重传,所以适合传输较短的文件。由于大多数网络应用程序都在同一台机器上运行,计算机上必须能够确保目的地机器上的软件程序能从源地址机器处获得数据包,以及源计算机能收到正确的回复。这是通过使用UDP的“端口号”完成的。源端口号标识了请求域名服务的本地机的应用程序,同时需要将所有由目的站生成的响应包都指定到源主机的这个端口上。与TCP不同,UDP并不提供对IP协议的可靠机制、流控制以及错误恢复功能等。由于UDP 比较简单,UDP头包含很少的字节,比TCP负载消耗少,所以UDP适用于不需要TCP可靠机制的情形,比如,当高层协议或应用程序提供错误和流控制功能的时候。UDP是传输层协议,服务于很多知名应用层协议,包括网络文件系统(NFS)、简单网络管理协议(SNMP)、域名系统(DNS)以及简单文件传输系统(TFTP)。 3.3 单播、广播、组播浅析 硬件组播(multicasting)是一种多点投递的形式,它使用硬件技术,通过 9 使用大量组播地址来通信。当某一组机器需要通信时,选择一个组播地址,并配置好相应的网络接口硬件,识别组播地址,从而收到该组播地址上分组的拷贝。在多数网络中,用户是通过把分组分送给一个特殊保留的地址即广播地址(broadcast address)来进行广播投递,它的主要缺点是会耗费大量的主机资源和网络资源。从投递目的地的数量而言,单播和广播均可看作是组播的一个子集。从数据报的投递方式而言,单播、广播和组播还是有较大的区别。 10 4 系统设计 本系统主要分为文字聊天和文件传书两大部分。所以将整个软件分成两大模 块来介绍。 4.1 软件的整体构架框图和程序 整个飞鸽传书软件的框架结构 11 聊天主界面 框架程序主代码: int main(void) { TFT_Init("/dev/fb0"); create_window();//开辟窗口 KEY_TFT_init(0,213,800);//键盘初始化X Y W SQL_init();//初始化数据库 great_socketfd();//初始化广播 pthread_t TOUCH,UDP,FILE,NEW_MSG;//定义四个线程号 pthread_create(&TOUCH,NULL,touch_ptread,NULL);//创建触摸检测线程 pthread_create(&UDP,NULL,(void *)UDP_recvfrom,NULL);/* 创建UDP数据接收线程*/ pthread_create(&FILE,NULL,(void *)TCP_send_file,NULL);/* 创建TCP发送文件线程,等待连接*/ pthread_create(&NEW_MSG,NULL,(void *)HAVE_NEW_MSG,NULL);/* 创建新消息提示线程*/ 12 pthread_join(TOUCH, NULL);//等待触摸检测线程结束并回收资源 pthread_join(UDP, NULL);//等待UDP数据接收线程结束并回收资源 pthread_join(FILE, NULL); //等待TCP发送文件线程结束并回收资源 pthread_join(NEW_MSG, NULL); //等待新消息提示线程结束并回收资源 return 0; } 四个线程函数代码: /************************************************************ * 语法格式: void *touch_ptread(void *arg) * 实现功能: 触摸屏处理线程 * 参 数: 无 * 返 回 值: 无 *************************************************************/ void *touch_ptread(void *arg) { TOUCH_HAND.FOCUS = FOCUS_ACC; TOUCH_HAND.OLD_FOCUS = FOCUS_ACC; TOUCH_HAND.WINDOW_NUM = WINDOW_LOGIN; CUR_VAL val_single; //触摸结构体 int touch_fd; //触摸屏文件描述符 int focus; touch_fd = open_touch_dev("/dev/event1"); while(1) { analysis_event_single(touch_fd, &val_single); if(val_single.state==1 && val_single.key==0) { switch (TOUCH_HAND.WINDOW_NUM) { case WINDOW_LOGIN://登录界面 case WINDOW_REG://注册界面 touch_login(val_single.current_x,val_single.current_y); break; case WINDOW_SPEAK://聊天界面 touch_talk(val_single.current_x,val_single.current_y); break; case WINDOW_WRITE://打字界面 touch_write(val_single.current_x,val_single.current_y); break; case WINDOW_SEND_FILE://文件界面 touch_send_file(val_single.current_x,val_single.current_y); 13 break; case WINDOW_REC_FILE://接收文件界面 touch_rec_file(val_single.current_x,val_single.current_y); break; case WINDOW_WAIT://等待登录成功或退出 focus=0; focus=find_talk_window_focus(val_single.current_x,val_single.current_y); if(focus==10) //恢复到登录界面 { TOUCH_HAND.WINDOW_NUM=WINDOW_LOGIN; TFT_File_Picture(Window0, 0, 0, "../pic/login.bmp", 0); Modle_show();//显示键盘 } break; default: break; } } } return NULL; } /************************************************************ * 语法格式: void *TCP_send_file(void *p) * 实现功能: TCP发送文件线程,等待连接 * 参 数: 无 * 返 回 值: 无 *************************************************************/ void *TCP_send_file(void *argc) { pthread_t SEND_FILE; struct sockaddr_in cliAddr; size_t addrlen=sizeof(cliAddr); int connfd=0; 14 int ret; while(1){ ADDR_FD cliaddr_fd; connfd=accept(socketfd_TCP,(struct sockaddr*)&cliAddr,&addrlen); if(connfd>0){ inet_ntop(AF_INET,&cliAddr.sin_addr,cliaddr_fd.IP_new,16); cliaddr_fd.connfd=connfd; ret=pthread_create(&SEND_FILE,NULL,(void*)Client_process,&cliaddr_fd); if(ret<0) { perror("pthread_create"); } }else{//等待失败 perror("accept"); } } return NULL; } /************************************************************ * 语法格式: void *UDP_recvfrom(void *arg) * 实现功能: UDP数据接收线程 * 参 数: 无 * 返 回 值: 无 *************************************************************/ void *UDP_recvfrom(void *arg) { char buf[4096]=""; struct sockaddr_in clientaddr; unsigned int client_len=sizeof(clientaddr); while(1){ bzero(&msg_flow,sizeof(msg_flow)); bzero(&clientaddr,client_len); bzero(buf,sizeof(buf)); int len=0; len=recvfrom(socketfd_UDP,buf,4096,0,(struct sockaddr*)&clientaddr,&client_len); if(len<0){ perror("recvform"); } login_or_registe(buf);//登录/注册处理 char IP_new[16]; inet_ntop(AF_INET,&clientaddr.sin_addr,IP_new,16); 15 strcpy(msg_flow.filemsg,buf+(strlen(buf)+1));//文件消息 跳过/0 sscanf(buf,"%*[^:]:%d:%[^:]:%[^:]:%d:%s", &msg_flow.bag_num, msg_flow.user1, msg_flow.machine1, &msg_flow.command, msg_flow.massage1); if((msg_flow.command&IPMSG_SENDCHECKOPT)==IPMSG_SENDCHECK OPT){ char BR[100]=""; unsigned int time_num=time(NULL);//包编号通过附加信息发送 sprintf(BR,"1:%d:%s:%s:%ld:%d",time_num,user,machine,IPMSG_RECVMSG, msg_flow.bag_num); int BR_len=strlen(BR); sendto(socketfd_UDP,BR,BR_len,0,(struct sockaddr*)&clientaddr,sizeof(clientaddr)); } if(strcmp(msg_flow.machine1,"")!=0&&strcmp(msg_flow.user1," ")!=0) {DE(msg_flow.command)) { case IPMSG_BR_ENTRY://上线 respond_BR_ENTRY(&clientaddr,msg_flow); break; case IPMSG_BR_EXIT://下线 send_BR_EXIT(&clientaddr); break; case IPMSG_ANSENTRY://我也在线 respond_ANSENTRY(&clientaddr,msg_flow); break; case IPMSG_SENDMSG://消息 respond_SENDMSG(&clientaddr,msg_flow); if(TOUCH_HAND.WINDOW_NUM==WINDOW_SPEAK){ print_user(3);//及时提示有新消息到来 } break; case IPMSG_RECVMSG://包回值,发送时判断是否在线 respond_RECVMSG(&clientaddr,msg_flow); break; default:break; } } } return NULL; } 16 /************************************************************ * 语法格式: void *HAVE_NEW_MSG(void *arg) * 实现功能: 新消息提示线程 * 参 数: 无 * 返 回 值: 无 *************************************************************/ void *HAVE_NEW_MSG(void *arg) { char sql[50]=""; strcpy(sql,"select * from user_list where flag='1';"); char **resultp;//数组 int row=0,column=0; while(1) { usleep(500*1000); if(TOUCH_HAND.WINDOW_NUM != WINDOW_SPEAK) continue; TFT_File_Picture(Window_new_msg, 0, 0, "../pic/deepblue.bmp", 1); usleep(500*1000); row=0; column=0; sqlite3_get_table(db,sql,&resultp,&row,&column,NULL); if(row>0) { TFT_SetTextPos(Window_new_msg, 0, 0); TFT_Print(Window_new_msg, resultp[6]); } } } 17 4.2 文字和文件传输模块的主要流程图和程序 通信模块1:实现,,,数据接收 主要流程图: 主要的几个函数代码: /************************************************************ * 语法格式: void respond_SENDMSG(struct sockaddr_in *clientaddr,MSG_flow msg_flow) * 实现功能: 接收消息/文件 并显示 * 参 数: 套接字地址结构体 数据包结构体 * 返 回 值: 无 *************************************************************/ void respond_SENDMSG(struct sockaddr_in *clientaddr,MSG_flow msg_flow) { char IP_new[16]; inet_ntop(AF_INET,&(clientaddr->sin_addr),IP_new,16); char **resultp;//数组 int row,column; char sql[100]="";//将该用户设置为有新消息表示 sprintf(sql,"update user_list set flag='1' where IP_new='%s';",IP_new); sqlite3_get_table(db,sql,&resultp,&row,&column,NULL);//设置新消息 bzero(sql,sizeof(sql)); sprintf(sql,"select * from user_list where IP_new='%s';",IP_new); sqlite3_get_table(db,sql,&resultp,&row,&column,NULL);//根据IP找用户名 18 bzero_IPMSG_history();//初始化历史记录结构体 strcpy(IPMSG_history.historyname,username); strcat(IPMSG_history.historyname,resultp[6]);//自己名后面加用户名 strcpy(IPMSG_history.who,resultp[6]); strcpy(IPMSG_history.history,msg_flow.massage1); get_time(IPMSG_history.time);//以本机时间为标准 if((msg_flow.command & IPMSG_FILEATTACHOPT)==IPMSG_FILEATTACHOPT) { while(1) { bzero_IPMSG_rec_file();//初始化接收文件结构体 char filemsg2[100]="";//多个文件接收处理 sscanf(msg_flow.filemsg,"%d:%[^:]:%lx:%lx:%lx:%s",&IPMSG_rec_file.num,I PMSG_rec_file.n ame, &IPMSG_rec_file.size,&IPMSG_rec_file.ltime,&IPMSG_rec_file.attribute,filem sg2); IPMSG_rec_file.pkgnum=msg_flow.bag_num; strcpy(IPMSG_rec_file.IP_new,IP_new); add_rec_file(); //添加接收文件库 if(strlen(filemsg2)<10) { break; } bzero(msg_flow.filemsg,sizeof(msg_flow.filemsg)); strcpy(msg_flow.filemsg,filemsg2+1); //filemsg里面还有一个/a } strcat(IPMSG_history.history,"[file]");//提示发来一个文件 } add_history();//加入历史记录 } /************************************************************ * 语法格式: void *UDP_recvfrom(void *arg) * 实现功能: UDP数据接收线程 * 参 数: 无 * 返 回 值: 无 *************************************************************/ void *UDP_recvfrom(void *arg) { char buf[4096]=""; struct sockaddr_in clientaddr; 19 unsigned int client_len=sizeof(clientaddr); while(1){ bzero(&msg_flow,sizeof(msg_flow)); bzero(&clientaddr,client_len); bzero(buf,sizeof(buf)); int len=0; len=recvfrom(socketfd_UDP,buf,4096,0,(struct sockaddr*)&clientaddr,&client_len); if(len<0){ perror("recvform"); } login_or_registe(buf);//登录/注册处理 char IP_new[16]; inet_ntop(AF_INET,&clientaddr.sin_addr,IP_new,16); strcpy(msg_flow.filemsg,buf+(strlen(buf)+1));//文件消息 跳过/0 sscanf(buf,"%*[^:]:%d:%[^:]:%[^:]:%d:%s", &msg_flow.bag_num, msg_flow.user1, msg_flow.machine1, &msg_flow.command, msg_flow.massage1); if((msg_flow.command&IPMSG_SENDCHECKOPT)==IPMSG_SENDCHECK OPT) { char BR[100]=""; unsigned int time_num=time(NULL);//包编号通过附加信息发送 sprintf(BR,"1:%d:%s:%s:%ld:%d",time_num,user,machine,IPMSG_RECVMSG, msg_flow.bag_num); int BR_len=strlen(BR); sendto(socketfd_UDP,BR,BR_len,0,(struct sockaddr*)&clientaddr,sizeof(clientaddr)); } if(strcmp(msg_flow.machine1," ")!=0&&strcmp(msg_flow.user1," ")!=0) { switch (GET_MODE(msg_flow.command)) { case IPMSG_BR_ENTRY://上线 respond_BR_ENTRY(&clientaddr,msg_flow); break; case IPMSG_BR_EXIT://下线 send_BR_EXIT(&clientaddr); break; case IPMSG_ANSENTRY://我也在线 respond_ANSENTRY(&clientaddr,msg_flow); break; case IPMSG_SENDMSG://消息 respond_SENDMSG(&clientaddr,msg_flow); 20 if(TOUCH_HAND.WINDOW_NUM==WINDOW_SPEAK){ print_user(3);//及时提示有新消息到来 } break; case IPMSG_RECVMSG://包回值,发送时判断是否在线 respond_RECVMSG(&clientaddr,msg_flow); break; default:break; } } } return NULL; } 4.3 系统的主要功能模块 主要流程图: 21 /************************************************************ * 语法格式: void rec_file(char *IP_new,char buf[14096],char **resultp,int row) * 实现功能: 接收一个文件 * 参 数: IP_new发送者IP buf组好的包接收文件的回应包 * resultp 数据库中读取到的所有可以发送的文件 * row 配合resultp用于定位现在接收的是第几个文件 * 返 回 值: 无 *************************************************************/ void rec_file(char *IP_new,char buf[14096],char **resultp,int row){ int sock_fd=0; int len; int fd; char file_load[100]="../FILE/"; struct sockaddr_in serverAddr; bzero(&serverAddr,sizeof(serverAddr)); serverAddr.sin_family=AF_INET; serverAddr.sin_port = htons(port); inet_pton(AF_INET,IP_new,&serverAddr.sin_addr); sock_fd=socket(AF_INET,SOCK_STREAM,0);//创建一个TCP套接字 if(sock_fd==0){ perror("sockfd"); } connect(sock_fd,(struct sockaddr*)&serverAddr,sizeof(struct sockaddr)); write(sock_fd,buf,strlen(buf)); strcat(file_load,resultp[row*8+1]); fd=open(file_load,O_WRONLY|O_CREAT,0777); bzero(buf,sizeof(buf)); long unsigned int len_sun=0; int percent=0,percent2=0; char OK[100]; while((len=read(sock_fd,buf,sizeof(buf)))!=0){ char percent1[100]; write(fd,buf,len); bzero(buf,sizeof(buf)); len_sun=len_sun+len; percent=(float)len_sun/atoi(resultp[row*8+3])*100; if(percent>=(percent2+1)){ percent2=percent;//进度 sprintf(percent1,"%d",percent); show_rec_file_percent(resultp[row*8],resultp[row*8+1],percent1); } if(len_sun>=atoi(resultp[row*8+3])){ show_rec_file_percent(resultp[row*8],resultp[row*8+1],"100"); sprintf(OK,"[%s]接收完成",resultp[row*8+1]); 22 send_to(IP_new,OK);//将上面的消息发送出去,通过语句来显示接收 break; } } close(sock_fd); } /************************************************************ * 语法格式: void ClientHandler(ADDR_FD cliaddr_fd) * 实现功能: 发送文件处理函数 * 参 数: ADDR_FD cliaddr_fd 包含套接字以及连接者结构体 * 返 回 值: 无 *************************************************************/ void ClientHandler(ADDR_FD cliaddr_fd){ char TCP_bag[one_data_size]=""; read(cliaddr_fd.connfd,TCP_bag,sizeof(TCP_bag));//读数据 MSG_flow file_flow; sscanf(TCP_bag,"%*[^:]:%d:%[^:]:%[^:]:%u:%s",&file_flow.bag_num, file_flow.user1,file_flow.machine1, &file_flow.command, file_flow.massage1); printf("*****--%s\n",TCP_bag); unsigned int file_bag_num=0; unsigned int file_num=0; unsigned int file_offset=0; char sql[100]=""; sscanf(file_flow.massage1,"%x:%x:%x",&file_bag_num,&file_num,&file_offset); if((file_flow.command&IPMSG_RELEASEFILES)==IPMSG_RELEASEFILES){ printf("对方拒绝接收 包编号为 %d 的一个(或多个)文件 ",file_bag_num); fflush(stdout); sprintf(sql,"delete from dir_file_list where pkgnum=%d;",file_bag_num); sqlite3_exec(db,sql,NULL,NULL,NULL); }else if((file_flow.command&IPMSG_GETFILEDATA)==IPMSG_GETFILEDATA){ sprintf(sql,"select *from send_file_list where pkgnum=%d and num=%d;",file_bag_num,file_num); char **resultp; int row,column; sqlite3_get_table(db,sql,&resultp,&row,&column,NULL); if(row!=0){ int fd; unsigned int length=0; char file_path_name[255]=""; sprintf(file_path_name,"../FILE/%s",resultp[row*7+1]); fd=open(file_path_name,O_RDONLY); 23 if(fd>=0){ bzero(TCP_bag,sizeof(TCP_bag)); int percent=0; int percent2=0; unsigned int DATA_LONG=0; char percent1[100]=""; while((length=read(fd,TCP_bag,sizeof(TCP_bag)))!=0){ write(cliaddr_fd.connfd,TCP_bag,length); bzero(TCP_bag,sizeof(TCP_bag)); DATA_LONG=DATA_LONG+length; percent=((float)(DATA_LONG))/(atoi(resultp[row*7+3]))*100; if(percent>=(percent2+1)){ percent2=percent; sprintf(percent1,"\r %s percent:%d",resultp[row*7+1],percent); show_send_file_percent(percent1,cliaddr_fd.IP_new); } } bzero(percent1,sizeof(percent1)); sprintf(percent1,"[%s]发送完成",resultp[row*7+1]); send_to(cliaddr_fd.IP_new,percent1);//将上面的消息发送出去 bzero(sql,sizeof(sql));//清除文件在表中的数据 sprintf(sql,"delete from send_file_list where pkgnum=%d and num=%d;",file_bag_num,file_num); sqlite3_exec(db,sql,NULL,NULL,NULL); }else{ //printf("SB\n"); write(cliaddr_fd.connfd,"SB\n",strlen("SB\n")); } close(fd); } } } 4.4 文字聊天信息的封装 封装是一种把多次聊天的的数据捆绑在一起,使这两者不受外界干扰和误 用的机制.封装可被理解为一种用做保护的包装器,以防止代码和数据被包装器 外部所定义的其他代码任意访问.对包装器内部代码与数据的访问通过一个明确 定义的接口来控制.封装代码的好处是每个人都知道怎样访问代码,进而无需考 虑实现细节就能直接使用它,同时不用担心不可预料的副作用。并且在聊天过程 中,封装的过程仍在持续,聊天的内容是边封装数据包边传输。 24 5 系统测试 测试环境 简单含有一台PC和一个A8开发板的局域网一个,在WIN2000/XP/9X/win7下均测试通过。 测试结果 系统在上述软硬件环境下对此系统各个子模块功能作出测试,结果基本能够达到预期功能。 测试图像1--文字聊天信息传输 25 测试图像2--文件、文件夹传输 26 6 结 论 随着互联网技术的迅猛发展,网络给人们带来了很多便利,局域网以其快捷的速度、优异的准确率始终在沟通和资源共享方面占有一席之地。局域网内的文字聊天以及文件、文件夹的传输的工具早已经为人们所创造和使用。 主要工作: 1.熟悉业务流程,进一步分析需求。了解程序的业务流程和客户的需求,为分析管理需求打下基础。2.研究并设计这个飞鸽软件系统的功能组成。它的核心是“聊,传”,因此确定系统的基本功能就是聊天和文件传送。 3.学习借鉴其它优秀软件,取长补短,可以使系统的开发过程少走弯路。 4.收集资料,为系统实现做准备。 5.设计完成系统软件。选择适当的设计软件,主要得用socket 控件的主要功能 。由于时间比较仓促,个人开发能力也有限,系统还存在一些其它的技术性问题,还需在今后的实践中不断总结和改善,以提高系统技术含量和研究价值,增强自身开发能力。 27 7 致 谢 这次毕业论文能够得以顺利完成,是所有曾经指导过我的老师,帮助过我的同学、朋友,一直支持着我的家人对我的教诲、帮助和鼓励的结果。我要在这里对他们表示深深的感谢~首先,要特别感谢我的指导老师——何老师。 老师在我毕业论文的撰写过程中,给我提供了极大的帮助和指导。从开始选题到中期修正,再到最终定稿,何老师给我提供了许多宝贵建议。老师渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,朴实无华、平易近人的人格魅力对我影响深远。不仅使我树立了远大的学术目标、掌握了基本的研究方法,还使我明白了许多待人接物与为人处世的道理。其次,要感谢科技学院所有曾经为我们 届电子信息工程专业任课的老师,老师们教会我的不仅仅是专业知识,更多的是对待学习、对待生活的态度。第三,感谢我的父母亲,你们是我力量的源泉,只要有你们,不管面对什么样的困难,我都不会害怕,谢谢你们对我的支持与鼓励~再次,感谢我的室友及其他好友,因为有你们的帮助,我的论文得以顺利完成。感谢你们,大学四年给我了那么多的帮助与鼓励,在我不开心的时候,总能让我开心起来。不会忘记,大学四年里我们一起度过的欢乐时光,那些开心的日子,总是那么令人难以忘怀。最后对老师,同学和家人再次致以我最衷心的感谢~教导过我的老师,你们的人格魅力永记我心间。身边的同学和朋友,有你们,我的大学才算完整。寝室的密友,你们的天赋犹如上天恩赐,有了你们我的生活更加精彩。 28 8 参考文献 [1] AndrewS.Tanenbaum. 计算机网络[M]. 北京: 清华大学出版社, 2008: 448-474. [2] 牛世章. 用CasynSocket类方法实现网络通信[J]. 中央民族大学学报, 2012(4): 1-3. [3] 张凯. TCP/IP网络通信协议的实现与探讨[J]. 网络与信息. 2008(9): 1-2. [4] Douglas E.Comer. TCP/IP 网络互连技术[M]. 北京: 清华大学出版社, 2006: 356-423. [5] 周学毛. 新编C语言程序设计教程[M]. 西安: 西安电子科技大学出版社, 2004: 77-123. [6]王远洋, 周渊平, 郭焕丽. Linux下基于socket多线程并发通信的实现[J]. 计算机信息, 2009(15): 13-27. [7] Neil Matthew,Richard Stones. Linux 程序设计[M]. 北京: 人民邮电出版社,2010: 513-545. [8] Michael J.Donahoo,Kenneth L.Calvert. TCP/IP Sockets in C[M]. John Wiley & Sons,Inc,2010.53-79. [9] Stephen Prata. C Primer Plus[M]. Sams Publishing, 2005: 115-421. [10] Stephen Prata. Unix Primer Plus[M]. Sams Publishing,2009: 153-221. 29
/
本文档为【基于TFT屏的飞鸽传书】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索