linux下网络聊天工具的设计和实现.doc
《linux下网络聊天工具的设计和实现.doc》由会员分享,可在线阅读,更多相关《linux下网络聊天工具的设计和实现.doc(43页珍藏版)》请在咨信网上搜索。
1、可编辑版Linux课程设计Linux下聊天工具的设计与实现课题: Linux下网络聊天工具的设计与实现姓名:郭思奎 学号: 22111440111 班级: 2014级通信工程班 指导教师: 董志诚 设计时间: 2017.06.30 38 / 43可编辑版摘 要这个毕业论文整体采用在linux平台下,在同一局域网内实现聊天功能。整体框架主要分为服务端和客户端两个部分,设置好ip和端口号,在Linux下编译和调试两主大块程序,实现服务端和各个客户端的连接,然后以服务端作为中继转实现客户端之间的通信。由于服务端只有一个,而客户端可以有任意多个,所以服务端采用了链表来管理多个客户端的信息,客户端的信息
2、发送通过封装在结构体中进行传输。本设计采用TCP/IP协议保证连接可靠,并在项目管理中采用linux流行的gcc和makefile编译,提高了编译和调试效率,加快了项目的完成速度。由于要模拟多个客户端,所以在运行的环境中需要在PC机上再克隆一个虚拟系统来操作多个客户端。本次设计的聊天工具采用字符串命令行的方式进行通信,主要实现了五个功能:新用户的注册与登录,用户之间一对一的聊天,用户之间群聊,用户之间文件加密传输,用户之间聊天记录保存。经过测试,程序运行可靠,能满足在linux中实现网络聊天的要求。关键词 linux,socket,gedit,服务端,客户端,网络编程可编辑版ABSTRACTT
3、his thesis gets the realization of chat in the same LAN under the Linux platform. The overall framework is divided into two parts: server and client. Set up the IP and port number, compile and debug two main bulk programs in the Linux and realize the connection between the server and the clients, an
4、d then realize the communication between clients by relying on server. Since there is only a server, but are multiple clients, so the server adopts a linked list to manage multiple clients information, and the information of clients is packed into struct to transfer. This design adopts the TCP/IP pr
5、otocol to ensure reliable connection, and uses the Linux gcc and makefile compiler in project management, which improves the compiling and debugging efficiency, and speeds up the project completion. Due to the simulation of multiple clients, so it needs to clone a virtual system in the PC machine to
6、 operate multiple clients in the running environment. The chat tool of the design works by using the method of character stringcommand line, which mainly accomplishes five functions: new users registration and login, biunique chat between users, users group chat, file encryption and transmission bet
7、ween users, users chat record retention. After the test, the program is reliable, and can meet the requirements of network chat in Linux.KeywordsLinux, socket, gedit, server, client, network programming可编辑版目 录摘 要IABSTRACTII1 绪论11.1研究背景11.1.1 Linux的介绍11.1.2 linux的发展史21.1.3 socket介绍21.2 研究意义31.3 国内外研究
8、现状32 需求分析52.1 功能需求52.2 性能需求52.3模块划分52.4 模块调用关系62.5 系统总流程图62.6 文件信息安全83 linux网络编程93.1 socket概念及功能93.2 socket类型93.3 socket函数103.3.1 API功能介绍103.3.2 套接口地址结构103.3.3 基本转换函数133.3.4 socket编程流程133.4 TCP/IP协议143.4.1 OSI概述143.4.2 TCP/IP 协议概述153.4.3 TCP/IP层次结构173.4.4 TCP通信184 文件传输加密及相关技术204.1 文件描述符描述204.2 文件操作函
9、数204.3 DES加密算法204.3.1 密钥计算过程214.3.2 初始置换ip和逆初始置换ip214.3.3 P置换和扩充置换E224.3.4 F函数和S盒置换224.4 linux线程通信234.5 链表245 具体实现255.1 登录和注册实现255.1.1 注册实现255.1.2 登录实现255.2 私聊和群聊265.2.1 私聊265.2.2 群聊265.3 文件传输和DES加密275.4 错误方案解决306 运行效果316.1 编译操作316.2 注册和登录运行效果图316.3 私聊和群聊效果图336.4 文件传输效果图346.5 文件内容加密效果图35结束语36参考文献37致
10、 谢38可编辑版1 绪论随着Internet的快速发展和普及,网络已经遍布世界各个角落。由于网路的快速便捷,使得人们深深的爱上了它,因此网络在人们的交流中显得越来越重要,使得人们的交流方式也变得越来越丰富。由于市场的需求和发展空间的很大,各种通信软件迅速成长。比如现在的QQ,MSN,微信,微博等网络聊天软件。通过网络,人们可以迅速的了解各种有用信息,使人们足不出门就可以了解天下大事。并且不管两个人离的有多远,都可以随时保持联系,因此拉近了人与人之间的距离。更重要的是,当遇见一些自然灾害使得电话通讯不好使用时,这些网络聊天工具就发挥了极大作用。这些软件功能都很完善,作为即将毕业的大学生,可以模拟
11、实现这些软件的部分功能,已达到自己对网络的理解和锻炼自己的编程能力,因此本次毕业论文设计主要研究的就是在linux开发平台上模拟局域网的网络聊天,使一个服务器与多个客户端之间建立链接并发送信息。这次毕业设计能够使我更加熟悉linux下编程操作,而更重要的是掌握socket编程,熟悉tcp和udp协议,掌握单链表的用法。1.1研究背景1.1.1 Linux的介绍在本次设计中是在linux系统中完成的,所以首先需要了解linux系统的来龙去脉。Linux是在Unix的基础上修改实现的,其主要的改变就是内核源码在网上完全公开。所有人都可以把下载的内核源码拿来直接用或者任意的修改,并且经修改过后的源码
12、也必须是公开的。经过几年的发展,linux已经有很大的改变,所以现在linux有很多版本,但它们都遵循Linux最初的内核。Linux系统的可移植性很高而且投资相对于其它系统而言较低,所以各种类型的计算机硬件设备中都选择安装linux系统,特别是现在很热的嵌入式设备中。在现在的IT行业中,Linux就是一种表示内核,是大家普遍都认同的说法,因为linux是使用GNU 工程中各种工具和数据库的一种操作系统。Linux得名于计算机业余爱好者Linus Torvalds。Linux支持各种各样的软件包括大量免费软件,因此为用户提供了很大的方便。Linux在其创始人开发过后,就由世界上各种IT精英爱好
13、者共同开发,提出他们自己的看法并进行修改,作为一个操作系统,它具有Unix、Mac、Windows和WindowsNT同样的功能。从本质上讲,Linux是Unix系统的克隆,在源码级上兼容绝大部分的Unix标准,它遵循POSIX规范。只要是使用linux就不得不提到GNU,GNU项目开始于1984年,旨在开发一个类似 Unix、并且是自由软件的完整操作系统:GNU系统。GNU 是GNU Not Unix的递归缩写。由于GNU操作系统的核心是linux,所以GUN的使用正在一步步变大。Linux操作系统在早期开发和使用中有许多软件比如:gcc编译程序、make编译管理程序、gas汇编程序、bas
14、h命令解释程序等等。GNU和linux是相互依存的,没有GNU linux就是一个简单的框架,毫无使用之处,同时没有linux GNU也不会受到人们的欢迎。Linux 操作系统作为一个开源的操作系统被很多IT同行的人所认同,它能够吸引人最大的地方就是下载内核源码不需要成本。只要使用遵循使用原则就可以任意使用并修改它的源代码。1.1.2 linux的发展史Linux的创始人,是一名叫Linus Torvalds的芬兰大学生。他当时发现了Unix系统的一些薄弱功能给他带来了很多的不便,于是他决定在Unix的基础上继续开发出来有别于Unix系统的操作系统,该系统弥补了Unix系统的缺点,同时又添加了
15、新功能。通过他不懈的努力,在linux内核中能实现一些基本的应用程序。由于Linux一开始就把Linux的源代码放在网络上,引起了很多的爱好者的注意,因此这些爱好者也加入到linux内核开发中,随着越来越多的高水平的爱好者加入,该系统的发展迅速膨胀,很快各种版本的linux产生。由于大量的增添和修改,使linux的文件框架越来越大,越来越稳定,而且实现了基本的TCP/IP功能,使得linux在Internet中迅速成长。经过二十多年的发展,现在Linux系统已经以成熟的一面展现在人们面前。现在的Linux内核更加稳定和健全,而且获取内核源码更加的简单实用,所以现在的商家抓住这些特点,开始大量普
16、遍的运用linux系统。由于linux到目前为止几乎没有被木马和病毒所困扰,所以也把它当作一种强壮而安全的防火墙。刚开始linux系统进入过后只是命令字符界面,还没有一个成型的桌面系统。一个系统要受到人们的欢迎,必须要图形界面,并且图形界面要美观且操作简单。所以桌面上的Linux也在不断的完善之中。现在推行出来的ubuntu,centos等图形界面都很受人们的喜爱,可以和微软的界面系统一比高下。由于linux系统内核小,兼容性好,效率高,稳定性强等特点,所以几乎在各个行业都能看见linux的身影,比如:军事,金融,电信以及政府。当今计算机领域比较巨型的服务器大多采用LINUX操作系统。可见LI
17、NUX在网络和分布式系统的应用将是很有前景的。Linux以后必将成为一种新的系统潮流。1.1.3 socket介绍在网络中聊天以及发送信息等需求,几乎都要用到网络编程中的socket,所以有一切皆socket一说。Linux系统中有很多关于网络编程的函数库,因此linux支持各种类型的套接字。接着就描述一下套接字,Socket接口是TCP/IP网络的一个重要连接,在该操作系统内核中定义了Socket接口和各种函数之间的调用关系,通过这个接口我们可以实现许多网络上的应用程序。对于Internet上的TCP/IP网络编程,首先要理解Socket接口。该套接口是TCP/IP协议中最常用的的接口。Li
18、nux中一切都是文件,所以套接字通信就是一种特殊的I/O,也就说明它是一种文件描述符,所以对socket的操作就是对socket的读写实现。服务端和客户端这两个进程要进行通信,需要socket提供端点来实现它们之间的互相通信。套接字也是一种面向c/s结构的思路,不同的套接字对应不同的服务端和客户端,服务端的套接字号是所有客户端都能识别的,任何客户端随机申请套接字都能与服务端建立连接。常用的Socket类型有两种:流式Socket SOCK_STREAM和数据报式SocketSOCK_DGRAM。1.2 研究意义随着互联网技术的发展,互联网应用越来越丰富。人们的联系方式也变得越来越多样化。譬如在
19、Internet上,有QQ、MSN、微信、微博等网络聊天软件,方便了距离相离很远是人们之间进行交流。刚开始这些软件只是为了方便人们交流而开发的一种娱乐方式,但是随着发展和市场的需求,这些工具的功能多样化使得它们在市场上带来了很多的经济利益,因而使得聊天功能越来越强大。作为一名即将毕业的大学生,可以通过这次的论文设计,巩固自己的C语言和数据结构知识,以及熟悉一个新系统Linux和Linux中的命令,socket编程,网络协议,高级网络编程等等,更重要的是锻炼了自己动手编程能力和面对问题怎样去分析和解决的能力。1.3 国内外研究现状随着网络的发展,通信网络成为了我们现代社会发展的重要桥梁。最近几年
20、云一说法已经在人们的思想中成为一种定局,不管是有线还是无线,他们之间的网络通信将是人们很关注的问题。由于网络通信的畅通,使得人们彼此之间的通信变得快捷和方便。这是因为人类的需求,国内外出现了很多的聊天工具。比如国内的QQ和国外的MSN,以及最近很红火的微信和facebook。而对于QQ而言,它是以服务端作为中继并且接收客户端发来的信息,服务器总控制客户端,这样客户端之间就可以采用不面向连接的方式进行通信,提高效率。当客户端之间没办法连接时,才由服务器进行中转通信。在Internet网络上使用TCP/IP协议进行传输,要想客户端与客户端能进行正常的通信,他们彼此要和服务端先建立起连接,然后通过与
21、服务器的TCP连接进行中转通信。通过这两个具有代表性的聊天工具,可以看出根据自身情况,国内和国外研究的方向是有一定区别的。由于套接字的类型还是比较多,所以在不同的操作系统中必须要有相应的套接字函数库。除此之外由于不同商家为了获利,生产出各种有竞争的产品,导致市场上出现了不同型号的pc机,并且运用了不同的操作系统,这样就对通信带来了很大的麻烦,所以提出了tcp/ip协议来解决这样的问题。以前几乎所有的套接字都是运用在windows系统下的,但是随着目前全球Linux系统开发的速度非常的快,使得socket套接字在linux系统中用的越来越多,其中以美国为首的发达国家最为积极。由于linux在中国
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux 网络 聊天工具 设计 实现
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。