linux实验三进程通信利用管道通信机制,实现输入的字符串的自动,实验3 进程通信.ppt...

实验3 进程通信

实验3 进程通信 实验内容1 管道通信 实验内容12 Socket通信 实 验 目 的 实 验 内 容 准 备 知 识 实 验 原 理 实 验 指 导 管道通信 实验目的 了解管道的基本概念; 掌握Linux支持的管道通信方式。 实验内容 本实验利用管道通信机制,实现输入字符串的自动分流操作。一共涉及3个管道,4个进程: 1 P1:从键盘接收输入字符串,写入管道Pipe1; 2 P2:从Pipe1接收字符串,若字符串的长度为偶数, 则将其写入管道Pipe2,否则将其写入管道Pipe3; 3 P3:从Pipe2读出字符串,并显示“Pipe2:Even length string: 偶长度字符串”; 4 P4:从Pipe3读出字符串,并显示“Pipe3:Odd length string: 奇长度字符串”; 5 输入exit 程序退出。 准备知识 查阅相关资料理解管道的基本概念和相关知识; 了解Linux支持的管道通信方式。 实验原理 管道的概念及特点 管道是Linux进程通信的手段之一。两个进程:一个进程从管道的 一端把数据输入进去,另一个进程可从管道的另一端读取这些数据。 管道具有以下特点: 1 管道是半双工的,同一时间,数据只能单向流动;若两进程 之间需要相互通信,则需需要建立两个管道; 2 Linux系统中把管道看作是一种特殊文件,采用文件管理的方 法对管道进行管理,且只存在于内存中; 3 数据的读出和写入都是单向的,不能从管道写端读取数据, 也不能向管道读端写入数据。 管道的创建 在程序设计中管道的创建是由系统调用pipe 函数实现的,其原 型定义如下: #include int pipe int fds[2] ; 管道的读写 pipe 函数有一个参数fds[2],是用于管道两端的描述字。管道一端 只能用于读,由描述字fds[0]表示,即管道读端;另一端则只能用于写, 由描述字fds[1]表示,即管道写端。可在对管道进行读写等操作时,调用 close、read、write等I/O函数 实验指导 假定进程P0在执行上述pipe命令建立管道后用fork命令创建了两个子进程P1和P2,P1和P2继承P0的文件获得管道fds使用权,因而可以相互通信 实验的流程图如下图所示 Socket通信 实 验 目 的 实 验 内 容 准 备 知 识 实 验 原 理 实 验 指 导 实验目的 理解Socket通信的基本概念和工作原理; 掌握Socket的建立、监听、连接、发送和接收数据的方法; 在Linux下使用C语言设计和实现基于Socket通信的程序。 实验内容 在同一台机器上建立一个服务器端Server,一个客户端Client; 建立Server 与 Client的连接; Server提供一个计算功能,即进行四则运算(除号用/代替); Client从键盘接收运算格式串,串的格式为: 操作符(+-*÷)之一,操作数1,操作数2 例如发送字符串:*,3,5 表示要Sever计算 3 * 5; Server接收命令串,解析并计算之,结果以字符串形式返回给Client; Client 显示结果; 输入q结束Client,Client结束前断开与Server的连接。 准备知识 掌握Socket通信的基本概念和工作原理; 掌握必要的网络知识,如TCP协议。 实验原理 Socket Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,可以用来进行网络方面的程序设计与开发。Socket(套接字)是通过标准的Unix文件描述符和其它程序通信的一个方法。Socket数据传输是一种特殊的输入输出,Socket套接字也是一种文件描述符。Socket也具有一个类似于打开文件的创建函数Socket ,该函数返回一个整型的Socket描述符,随后的建立连接、消息传输等操作都是对该描述符进行操作的。每一个套接字都用一个半相关描述: 协议,本地地址、本地端口 来表示;一个完整的套接字则用一个相关描述: 协议,本地地址、本地端口、远程地址、远程端口 。每一个套接字都有一个本地的由操作系统分配的唯一的套接字号。 Socket的三种类型 1 流式Socket(SOCK_STREAM) 流式套接字提供可靠的、面向连接的通信流;它使用TCP协议, 从而保证了数据传输的正确性和顺序性。 2 数据报Socket(SOCK_DGRAM) 数据报套接字定义了一种无连接的服务,数据通过相互独立的报 文进行传输,是无序的,并且不保证可靠性、无差错。它使用数据报协 议UDP。 3 原始Socket 原始套接字允许对底层协议如IP或ICMP直接访问,它功能强大 但使用较为不

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值