Linux程序设计——Linux进程及网络通信开发.doc

Linux程序设计——Linux进程及网络通信开发.doc

ID:58149792

大小:708.50 KB

页数:11页

时间:2020-04-25

Linux程序设计——Linux进程及网络通信开发.doc_第1页
Linux程序设计——Linux进程及网络通信开发.doc_第2页
Linux程序设计——Linux进程及网络通信开发.doc_第3页
Linux程序设计——Linux进程及网络通信开发.doc_第4页
Linux程序设计——Linux进程及网络通信开发.doc_第5页
资源描述:

《Linux程序设计——Linux进程及网络通信开发.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、昆明理工大学信息工程与自动化学院学生上机报告(201—201学年第学期)课程名称:Linux程序设计开课实验室:时间:年月日年级、专业、班学号姓名成绩实验项目名称Linux进程及网络通信开发指导教师教师评语该同学是否了解相关理论:A.了解□  B.基本了解□ C.不了解□该同学的动手能力:A.强 □B.中等□C.差□该同学的上机是否达到要求:A.达到□ B.基本达到□ C.未达到□上机实验报告是否规范:A.规范□ B.基本规范□ C.不规范□上机实验过程是否详细记录:A.详细□ B.一般□ C.没有□注:5个A为优4个

2、A为良3个A为及格其余为不及格。教师签名:年月日一、上机目的1、熟悉Linux进程通信进程管道2、了解和掌握客户/服务器3、掌握套接字的工作元理。二、相关技术阐述1、管道管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。管道是Linux支持的最初UnixIPC形式之一,具有以下特点:管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);单独构成一种独立的文件系

3、统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中。数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。管道两端用描述字fd[0]以及fd[1]来描述,管道的两端是固定了任务的。fd[0]只能用于读,称其为管道读端;另一端则只能用于写,由描述字fd[1]来表示,称其为管道写端。从管道中读取数据:如果管道的写端不存在,则认为已经读到了数据的末

4、尾,读函数返回的读出字节数为0;当管道的写端存在时,如果请求的字节数目大于PIPE_BUF,则返回管道中现有的数据字节数,如果请求的字节数目不大于PIPE_BUF,则返回管道中现有数据字节数(此时,管道中数据量小于请求的数据量);或者返回请求的字节数(此时,管道中数据量不小于请求的数据量)。如果管道没有数据,且管道的写端口是打开状态,则读操作被阻塞直到有数据写入为止。向管道中写入数据:对于设置了阻塞标志的写操作:当要写入的数据量不大于PIPE_BUF时,linux将保证写入的原子性。如果此时管道空闲缓冲区不足以容纳要写

5、入的字节数,则进入睡眠,直到当缓冲区中能够容纳要写入的字节数时,才开始进行一次性写操作。当要写入的数据量大于PIPE_BUF时,linux将不再保证写入的原子性。FIFO缓冲区一有空闲区域,写进程就会试图向管道写入数据,写操作在写完所有请求写的数据后返回。对于没有设置阻塞标志的写操作:当要写入的数据量大于PIPE_BUF时,linux将不再保证写入的原子性。在写满所有FIFO空闲缓冲区后,写操作返回。当要写入的数据量不大于PIPE_BUF时,linux将保证写入的原子性。如果当前FIFO空闲缓冲区能够容纳请求写入的字节

6、数,写完后成功返回;如果当前FIFO空闲缓冲区不能够容纳请求写入的字节数,则返回EAGAIN错误,提醒以后再写;管道的主要局限性正体现在它的特点上:只支持单向数据流;只能用于具有亲缘关系的进程之间;没有名字;管道的缓冲区是有限的(管道制存在于内存中,在管道创建时,为缓冲区分配一个页面大小);管道所传送的是无格式字节流,这就要求管道的读出方和写入方必须事先约定好数据的格式,比如多少字节算作一个消息(或命令、或记录)等等;有名管道以FIFO的文件形式存在于文件系统中。这样,即使与FIFO的创建进程不存在亲缘关系的进程,只要

7、可以访问该路径,就能够彼此通过FIFO相互通信。2、套接字(socket)套接字是一种通信机制,凭借这种机制,客户/服务器系统的开发工作既可以在本地单机上进行,也可以跨网络进行。套接字的特性有三个属性确定,它们是:域(domain),类型(type),和协议(protocol)。套接字还用地址作为它的名字。地址的格式随域(又被称为协议族,protocolfamily)的不同而不同。每个协议族又可以使用一个或多个地址族定义地址格式。1.套接字的域:域指定套接字通信中使用的网络介质。最常见的套接字域是AF_INET,它是指

8、Internet网络,许多Linux局域网使用的都是该网络,当然,因特网自身用的也是它。其底层的协议——网际协议(IP)只有一个地址族,它使用一种特定的方式来指定网络中的计算机,即IP地址。在计算机系统内部,端口通过分配一个唯一的16位的整数来表示,在系统外部,则需要通过IP地址和端口号的组合来确定。2.套接字类型:流套接字(在某

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。