Linux网络聊天系统

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

-1-Linux网络聊天系统学院:信自学院班级:计科092学号:200910405229姓名:指导教师:-2-前瞻在网络无所不在的今天〖资料来源:毕业设计(论文)网〗在Internet上,有ICQ、MSN、Gtalk、OICQ等网络聊天软件,极大程度上方便了处于在世界各地的友人之间的相互联系,也使世界好像一下子缩小了,不管你在哪里,只要你上了网,打开这些软件,就可以给你的朋友发送信息,不管对方是否也同时在线,只要知道他有号码。Linux操作系统作为一个开源的操作系统被越来越多的人所应用,它的好处在于操作系统源代码的公开化!只要是基于GNU公约的软件你都可以任意使用并修改它的源代码。但对很多习惯于Windows操作系统的人来说,Linux的操作不够人性化、交互界面不够美观,这给Linux操作系统的普及带来了很大的阻碍。因此制作一个Linux操作系统下的拥有人性化界面的实时通讯工具,将给那些刚刚接触Linux操作系统的用户带来极大的方便,而且通过设计这样的一个应用程序还能更好的学习网络编程知识和掌握LINUX平台上应用程序设计开发的过程,以达到检验学习成果的目的本课程设计主要实现一个Linux下的局域网聊天工具的设计。该设计主要分为两部分,客户端部分和主机部分。运行服务器端程序可以和任意运行了客户端程序的主机进行通信,通信内容能够通过终端显示出来。两个部分都使用C语言,利用vi编辑器,通过Socket套接口编程实现相关功能本论文还设计了另一个网络聊天室程序,我们都知道网络聊天室是用户比较喜欢的一种应用程序,借助聊天室和他的留言系统,用户可以及时互通信息,交流思想。本次设计的系统主要采用了基于C/S模式开发了简易聊天室系统,在终端字符界面,支持用户管理,用户名/密码注册和登录,客户端登陆到服务器聊天后,可以在聊天室内与其他用户交流(这个聊天室中的任何一个用户输入一段字符后,室内的其他用户都可以看到这句话)。本设计使用网络套接字socket和多线程在网络中的应用,并基于linux下的vi编辑器。本方案经gcc调试器调试成功,可以在单机网络聊天中使用。-3-一、shell编程1、目的为了巩固这个学期所学的linux操作系统中,对系统运行启动后的内存管理、进程管理、文件管理、设备管理等的了解和熟悉以及一些linux平台上的操作。以下是两个Shell程序的练习。2、实现过程2.1cd、environ、exit指令(1)源代码#includeunistd.h#includestdio.h#includesys/wait.h#includestdlib.h#includestring.h#includemalloc.h#includeerrno.h#includesys/wait.h#defineCMD_CD(cd)#defineCMD_ENVIRON(environ)#defineCMD_EXIT(exit)voidPrint(void);intInput(charch[10]);voidCd(void);voidEnviron(void);intmain(void){charch[1024];system(clear);printf(\n********Thisismyshell*****\n\n);while(1){Print();scanf(%s,ch);Input(ch);-4-(2)运行截图-5-2.2echo、help、jobs、quit/exit/bye指令源代码#includeunistd.h#includestdio.h#includesys/wait.h#includestdlib.h#includestring.h#includemalloc.h#includeerrno.h#includesys/wait.h#defineCMD_ECHO(echo)#defineCMD_HELP(help)#defineCMD_JOBS(jobs)#defineCMD_QUIT(quit)#defineCMD_EXIT(exit)#defineCMD_BYE(bye)voidPrint(void);intInput(charch[10]);voidEcho(void);voidHelp(void);voidJobs(void);intmain(void){charch[1024];system(clear);printf(\n********Thisismyshell*****\n\n);while(1){Print();scanf(%s,ch);Input(ch);}return0;}intInput(charcmd[1024]){if(cmd[0]=='\0'){return0;-6-(2)运行截图二、网络聊天室的设计设计目的由于Linux的开源的特点,越来越多的人转而使用Linux做为PC机的操作系统。但是Linux的真正兴起只是在最近几年,因此很多功能并不是很完善,并且由于Linux的开源特征,很多软件开发公司很难从中获得直接利益,因此很多Windows上的实用的软件,在Linux下却很少见。本课程设计正是为了解决Linux下局域网聊天问题而设计的,并且希望通过本课程设计可以更好的了解Linux操作系统的原理,进一步掌握vi,gcc等工具的使用,并且熟悉Linux下的网络编程,以及多线程编程。-7-linux介绍来源:是一种自由和开放源码的类Unix操作系统。目前存在着许多不同的Linux,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,从手机、平板电脑、路由器和视频游戏控制台,到台式计算机、大型机和超级计算机。Linux是一个领先的操作系统,世界上运算最快的10台超级计算机运行的都是Linux操作系统。严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统。Linux得名于计算机业余爱好者LinusTorvalds。Linux操作系统是UNIX操作系统的一种克隆系统。它诞生于1991年的10月5日(这是第一次正式向外公布的时间)。以后借助于Internet网络,并经过全世界各地计算机爱好者的共同努力下,现已成为今天世界上使用最多的一种UNIX类操作系统,并且使用人数还在迅猛增长。Linux操作系统的诞生、发展和成长过程始终依赖着以下五个重要支柱:UNIX操作系统、MINIX操作系统、GNU计划、POSIX标准和Internet网络。Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。提到Linux我们不能不提GNU和Unix。RichardM.Stallman建立的自由软件联盟出版了两种许可证,GNU通用公共许可证(GNUGneralPublicLicense,GPL)和GNU函数库通用公共许可证(GNULibraryGneralPublicLicense,LGPL)。大部分GNU工程的软件和文档是以GNU通用公共许可证发行的,但是有一些库是以GNU函数库通用公共许可证发行的。按照GNU通用公共许可证的规定,Linux的源代码可以自由获取,这满足了我们学习该系统的强烈愿望。GPL充分体现了Stallman的思想:只要用户所做的修改是同等自由的,用户可以自由地使用、拷贝、查询、重用、修改甚至发布这个软件。通过这种方式,GPL保证了Linux(以及同一许可证下的大量其他软件)不仅现在自由可用,而且皮后经过任何修改这后都仍然可以自由使用。Linux操作系统是UNIX操作系统的一个克隆版本。UNIX操作系统是美国贝尔实验室的肯·汤普逊Ken.Thompson和丹尼斯·里奇DennisRitchie于1969年夏在DECPDP-7小型计算机上开发的一个分时操作系统。当时KenThompson为了能在闲置不用的PDP-7计算机上运行他非常喜欢的星际旅行(Spacetravel)游戏,在1969年夏天乘他夫人回家乡加利福尼亚渡假期间,在一个月内开发出了unix操作系统的原型。当时使用的是BCPL语言(基本组合编程语言),后经DennisRitchie于1972年用移植性很强的C语言进行了改写,使得UNIX系统在大专院校得到了推广。1981年IBM公司推出微型计算机IBMPC。在1981-1991年间MS-DOS操作系统一直是微机上操作系统的主宰。此时计算机硬件价格虽逐年下降,但软件价格仍居高不下。当时Apple的MACos操作系统可以说是性能最好的,但是其天价没人能够轻-8-易靠近。到1991年,GNU计划已经开发出了许多工具软件。最受期盼的GnuC编译器已经出现,但还没有开发出免费的GNU操作系统。即使是MINIX也开始有了版权,需要购买才能得到源代码。而GNU的操作系统HURD一直在开发之中,但并不能在几年内完成。对于Linus来说,已经不能等待了。从1991年4月份起,他开始酝酿并着手编制自己的操作系统。刚开始,他的目的很简单,只是为了学习Intel386体系结构保护模式运行方式下的编程技术。但后来Linux的发展却完全改变了初衷。1991年初,Linus开始在一台386sx兼容微机上学习minix操作系统。通过学习,他逐渐不能满足于minix系统的现有性能,并开始酝酿开发一个新的免费操作系统。根据Linux在comp.os.minix新闻组上发布的消息,我们可以知道他逐步从学习minix系统到开发自己的Linux的过程。从1991年的4月份开始,Linus几乎花了全部时间研究386-minix系统(hackthekernel),并且尝试着移植GNU的软件到该系统上(GNUgcc、bash、gdb等)。并于4月13日在comp.os.minix上发布说自己已经成功地将bash移植到了minix上,而且已经爱不释手、不能离开这个shell软件了。第一个与Linux有关的消息是在1991年7月3日在comp.os.minix上发布的(当然此时还不存在Linux这个名称,当时Linus的脑子里想的可能是FREAX,FREAX的英文含义是怪诞的、怪物、异想天开等)。其中透露了他正在进行Linux系统的开发,并且在Linux最初的时候已经想到要实现与POSIX(UNIX的国际标准)的兼容问题了。在Linus的下一发布的消息中(1991年8月25日comp.os.minix),他向所有minix用户询问Whatwouldyouliketoseeinminix?(你最想在minix中见到什么?),在该消息中他首次透露出正在开发一个(免费的)386(486)操作系统,并且说只是兴趣而已,代码不会很大,也不会象GNU的那样专业。开发免费操作系统这个想法从4月份就开始酝酿了,希望大家反馈一些对于minix系统中喜欢那些特色不喜欢什么等信息,由于实际的和其它一些原因,新开发的系统刚开始与minix很象(并且使用了minix的文件系统)。并且已经成功地将bash(1.08版)和gcc(1.40版)移植到了新系统上,而且再过几个月就可以使用了。最后,Linus申明他开发的操作系统没有使用一行minix的源代码;而且由于使用了386的任务切换特性,所以该操作系统不好移植(没有可移植性),并且只能使用AT硬盘。对于Linux的移植性问题,Linus当时并没有考虑。但是目前Linux几乎可以运行在任何一种硬件体系结构上。到了1991年的10月5日,Linus在comp.os.minix新闻组上发布消息

1 / 27
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功