基于Linux网络聊天室的设计3

上传人:大米 文档编号:500865477 上传时间:2023-11-25 格式:DOC 页数:31 大小:279KB
返回 下载 相关 举报
基于Linux网络聊天室的设计3_第1页
第1页 / 共31页
基于Linux网络聊天室的设计3_第2页
第2页 / 共31页
基于Linux网络聊天室的设计3_第3页
第3页 / 共31页
基于Linux网络聊天室的设计3_第4页
第4页 / 共31页
基于Linux网络聊天室的设计3_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《基于Linux网络聊天室的设计3》由会员分享,可在线阅读,更多相关《基于Linux网络聊天室的设计3(31页珍藏版)》请在金锄头文库上搜索。

1、 姓名: 方 建 学号: 班级:网络工程1031背景1.1 开发背景在网络无所不在的今天,在Internet上,有ICQ、MSN、Gtalk、OICQ等网络聊天软件,极大程度上方便了处于在世界各地的友人之间的相互联系,也使世界好像一下子缩小了,不管你在哪里,只要你上了网,打开这些软件,就可以给你的朋友发送信息,不管对方是否也同时在线,只要知道他有号码。Linux 操作系统作为一个开源的操作系统被越来越多的人所应用,它的好处在于操作系统源代码的公开化!只要是基于GNU公约的软件你都可以任意使用并修改它的源代码。但对很多习惯于Windows操作系统的人来说,Linux的操作不够人性化、交互界面不够

2、美观,这给Linux操作系统的普及带来了很大的阻碍。因此制作一个Linux 操作系统下的拥有人性化界面的实时通讯工具,将给那些刚刚接触Linux操作系统的用户带来极大的方便,而且通过设计这样的一个应用程序还能更好的学习网络编程知识和掌握LINUX平台上应用程序设计开发的过程,将大学四年所学知识综合运用,以达到检验学习成果的目的1.2 linux介绍 Linux是一种针对PC计算机和工作站的操作系统,它具有像Windows和Mac那样的功能齐全的图形用户界面(GUI,Graphical User Interface)。Linus Torvald和其它的遍布世界各地的编程人员共同开发的。作为一种操

3、作系统,它具有与Unix,Mac,Windows和Windows NT同样的功能。 提到Linux我们不能不提GNU和Unix。Richard M.Stallman建立的自由软件联盟出版了两种许可证,GNU通用公共许可证(GNU Gneral Public License,GPL)和GNU函数库通用公共许可证(GNU Library Gneral Public License,LGPL)。大部分GNU工程的软件和文档是以GNU通用公共许可证发行的,但是有一些库是以GNU函数库通用公共许可证发行的。按照GNU通用公共许可证的规定,Linux的源代码可以自由获取,这满足了我们学习该系统的强烈愿望。

4、GPL充分体现了Stallman的思想:只要用户所做的修改是同等自由的,用户可以自由地使用、拷贝、查询、重用、修改甚至发布这个软件。通过这种方式,GPL保证了Linux(以及同一许可证下的大量其他软件)不仅现在自由可用,而且皮后经过任何修改这后都仍然可以自由使用。 Unix是由ATT贝尔实验室的Ken Thompson和Dennis Ritchie于1969年在一台已经废弃了的PDP-7上开发的;最初它是一个用汇编语言写成的单用户操作系统。后来,他们又在PDP-11上用C语言重新编写(发明C语言的部分目的就在于此),把Unix做成为了一个文本处理系统,这使Unix在贝尔实验室得到广泛的应用。U

5、nix的最初版本免费提供给许多知名的大学的计算机系使用。加州大学伯克利分校的计算机系就是其中的一名,并地Unix进行了修改增加了许多新的特点,这就是主为人知的BSC版本的Unix。与此同时,其它独立开发的Unix版本也开始萌生。Unix不断发展了,各种版本被应用到不同的计算机使用。而Linux最初是专门为基于Intel的个人计算机设计的。(1)Linux的昨天 1991年,一名叫Linus Torvalds的芬兰大学生对Unix各种版本对于80386类的机器的脆弱支持十分不满,他决定要开发出一个全功能的、支持POSIX标准的、类Unix的操作系统内核,该系统吸收了BSD和System V 的优

6、点,同进摒弃了它们的缺点。他独立把这个内核开发到0.02版,这个版本已经可以运行gcc、bash和很少的一些应用程序。后来,他又开始了在因特网上寻求广泛的帮助。 1994年,Linux已经升级到1.0版本。它的源代码量也呈指数形式增长,实现了基本的TCP/IP功能,此时Linux已经拥有大约10万的用户。(2) Linux的今天 作为一各服务器级的操作系统,Linux已经成熟了。现在的Linux内核由150多行代码组成,能作为Web服务器平台,也为越来越多的商业用户提供文件和打印服务。它既被当作邮件服务器的一种候选平台,也被当作一种强壮而安全的防火墙。 Linux的企业级特性,比如支持多处理器

7、、支持大型文件系统、日志文件系统以及密集型计算和高可用性集群技术,也逐步成熟。 桌面上的Linux也在继续完善。KDE桌面提供的图形用户界面在易用性和可配置方面都能和微软的Windows相媲美。(3) Linux的明天 Linux最强大的生命力在于其公开的开发过程。每个人都有可以自由获取内核源程序,每个人都有要不得以运载源程序加以修改,而后他人也可以自由获取你修改后的源程序。Linux这种独特的自由流畅的开发模型已被命名为bazaar(集市模型)。Bazaar开发模型通过重视实验,征集并充分利用早期的反馈,对巨大数量的脑力资源进行平衡配置,可以开发出更优秀的软件。本联盟就是想通过bazaar开

8、发模型,在网上召集一些Linux的爱好者,开发出更优秀的操作系统或软件。 2 技术说明2.1 TCP和UDP通信的概念2.1.1 UDP通信 UDP是用户数据报协议的简称。它是以中午连接的逻辑通信信道。UDP在传送数据之前不需要先建立连接,远地主机的传输层在收到udp数据报后,不需要给出任何确认,所以不能保证其交付时可靠。它的特点是:因无连接,故提供的是不可靠的信道,但也是因无连接而具有很好的传输效率。 2.1.2 TCP通信 TCP是传输控制协议的简称,它是提供一条全双工的、可靠的信道。TCP提供面向连接的服务,在传送数据之前必须先建立连接,数据传送结束后要释放连接。TCP不提供广播和多播服

9、务。 由于TCP要提供可靠的、面向连接的运输服务,所以不可避免地增加了许多系统开销,比如确认、流量控制、计时器以及连接管理等都需要占用许多系统的时空资源。 两个计算机之间如果使用TCP通信,其连接过程需要三次握手实现,如实验图1-1所示。图1-1 用三次握手建立TCP连接 对于两个计算机之间连接的释放过程也需要类似的3次握手的互相确认的过程,如实验图1-2所示。图1-2 TCP连接的释放过程2.2客户/服务器模型在客户/服务器模型中,多个相互通信的计算机都作为客户端,与网络服务器进行连接,并通过服务器进行信息的传递。所以多个客户端之间的通信就变为了客户端与服务端的通信。所以,采用客户/服务器模

10、型进行网络聊天需要分别编写服务器端和客户端的程序,服务器和客户端之间相互通信的同步关系和各自的程序流程如实验图1-3所示。图1-3 Socket通信流程图2.3网络套接字(socket)的概念 1 介绍 上世纪中后期, 在美国国防部高研署(DARPA)将TCP /IP 的软件提供给加利尼亚大学Berkeley 分校后, TCP /IP 很快被集成到Unix 中, 同时出现了许多成熟的TCP /IP 应用程序接口(API) 。这个API 称为Socket 接口( 套接口) 。Socket 在计算机中提供了一个通信端口, 可以通过这个端口与任何一个具有Socket 接口的计算机通信。应用程序在网络

11、上传输,接收的信息都通过这个Socket 接口来实现。在应用开发中就像使用文件句柄一样, 可以对Socket 句柄进行读、写操作。今天, Socket 接口是TCP /IP 网络最为通用的API, 也是在Internet 上进行应用开发最为通用的API。Linux 操作系统具有良好的稳定性和出色的网络性能, 因此被广泛应用于网络服务领域。而在Linux下开发高性能的网络通信程序, 是充分发挥Linux 网络特性的一个关键因素。2 Socket 原理简介 当用电话与他人通信时, 必须拿起话筒, 拨叫对方的电话号码, 然后等待对方的应答; 当双方进行通话的时候, 就建立了一个具有两个端点的通信线路

12、,这两个端点是:本地的电话号码( 在本地位置) ;对方的电话号码( 在对方的位置处) 。双方的通信与通信的两个端点和他们之间的通信线路有关。Linux 中的套接口与电话非常相似。套接口代表通信线路中的端点, 两端点之间就是数据通信网络。套接口与电话的相似性还表现在另一方面。当给某人打电话时, 拨叫的是对方用户的电话号码。而套接口中的网络地址就相当于电话号码。通过在程序中指定远程套接口的地址, 就可以建立从本地套接口到 远端套接口的通信。TCP /IP 是计算机互连最常使用的网络通讯协议, TCP /IP 的核心部分由网络操作系统的内核实现,应用程序通过编程接口来访问TCP /IP。套接字( S

13、ocket) 是介于网络应用层和传输层之间的编程接口, 套接字接口提供了访问下层通信协议的大量系统调用和相应的数据结构。在Linux 中, 套接字接口是应用程序访问下层的网络协议的惟一方法。具体讲,套接字在用户级实现了两个应用程序之间的网络连接和数据交换, 所以Linux 中的套接字意味着网络上的连接。套接字在TCP /IP 网络模型中的地位如图1所示。Socket 分为以下三种类型: 流式套接字( Stream Socket) : 是最常用的套接字类型, 文件传送协议( FTP) 即使用流式套接字。提供一个面向连接、可靠的数据传输服务, 数据无差错、无重复地发送, 且按发送顺序接收。内设流量

14、控制, 避免数据流超限; 数据被看作是字节流, 无长度限制。数据报套接字(Datagram Socket) : TCP /IP 协议族中的UDP 协议使用此类接口, 它是无连接的服务,数据通过相互独立的报文进行传输, 提供了一个无连接服务。数据包以独立包形式被发送, 不提供无错保证, 数据可能丢失或重复, 并且接收顺序混乱。原始数据报套接字(Raw Socket) : 该接口允许对较低层协议, 如IP、ICMP 直接访问。常用于检验新的协议实现或访问。3 Socket 通信过程与程序开发3.1 Socket 通信过程 基于TCP 可靠连接的客户与服务器连接进程流程图如图2。Socket 工作过

15、程如下: 服务器首先启动, 通过调用Socket (), 建立一个Socket, 然后调用bind()将该Socket 和本地网络地址绑系在一起, 再调用listen()使Socket 做好侦听的准备, 并规定它的请求队列的长度,之后就调用accept()来接收连接。客户在建立Socket 后就可调用connect()和服务器建立连接。连接一旦建立,客户机和服务器之间就可以通过调用send()和recv()来发送和接收数据。最后, 待数据传送结束后, 双方调用close()关闭Socket。3.2 Socket 通信程序开发下面详细说明Socket 通信程序的开发过程:( 1) 步骤1: 建立套接口socket() int sockfd = socket ( int domain, int type, intprotocol) , 其中domain 参数指定socket 协议族, 包括PF_LOACL 和PF_INET, PF_LOACL 表示使用本地套接口, PF_INET 表示使用Internet 套接口。Type 参数定义了套接口的类型, 包括SOCK_STREAM 和SOCK_DGRAM, SOCK_STREAM 指定为流套接口,SOCK_DGRAM指定为数据报套接口。protocol 通常赋值“0”, 意味套接口使用TCP

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

当前位置:首页 > 学术论文 > 其它学术论文

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