《UNIX网络编程 卷2:进程间通信(第2版)》——1.8 书中IPC例子索引表

1.8 书中IPC例子索引表

为分析各种特性,全书主要使用了三种交互模式。

(1)文件服务器:客户-服务器应用程序,客户向服务器发送一个路径名,服务器把该文件的内容返回给客户。

(2)生产者-消费者:一个或多个线程或进程(生产者)把数据放到一个共享缓冲区中,另有一个或多个线程或进程(消费者)对该共享缓冲区中的数据进行操作。

(3)序列号持续增1:一个或多个线程或进程给一个共享的序列号持续增1。该序列号有时在一个共享文件中,有时在共享内存区中。

第一个例子分析各种形式的消息传递,另外两个例子则分析各种类型的同步和共享内存区。

为了提供本书所涵盖的不同主题的索引,图1-9、图1-10和图1-11汇总了我们开发的程序及它们的源代码所在的起始图号和页码。

时间: 2024-10-24 14:32:37

《UNIX网络编程 卷2:进程间通信(第2版)》——1.8 书中IPC例子索引表的相关文章

《UNIX网络编程 卷2:进程间通信(第2版)》——导读

**前言 **大多数重要的程序都涉及进程间通信(Interprocess Communication, IPC).这是受下述设计原则影响的自然结果:把应用程序设计为一组相互通信的小片断比将其设计为单个庞大的程序更好.从历史角度看,应用程序有如下几种构建方法. (1)用一个庞大的程序完成全部工作.程序的各部分可以实现为函数,函数之间通过参数.返回值和全局变量来交换信息. (2)使用多个程序,程序之间用某种形式的IPC进行通信.许多标准的Unix工具都是按这种风格设计的,它们使用shell管道(IP

《UNIX网络编程 卷2:进程间通信(第2版)》——第1章 简介 1.1 概述

第1章 简介 1.1 概述 IPC是进程间通信(interprocess communication)的简称.传统上该术语描述的是运行在某个操作系统之上的不同进程间各种消息传递(message passing)的方式.本书还讲述多种形式的同步(synchronization),因为像共享内存区这样的较新式的通信需要某种形式的同步参与运作. 在Unix操作系统过去30年的演变史中,消息传递历经了如下几个发展阶段. 管道(pipe,第4章)是第一个广泛使用的IPC形式,既可在程序中使用,也可从she

《UNIX网络编程 卷2:进程间通信(第2版)》——1.6 出错处理:包裹函数

1.6 出错处理:包裹函数 在现实程序中,我们必须检查每个函数调用是否返回错误.由于碰到错误时终止程序执行是个惯例,因此我们可以通过定义包裹函数(wrapper function)来缩短程序的长度.包裹函数执行实际的函数调用,测试其返回值,并在碰到错误时终止进程.我们使用的命名约定是将函数名第一个字母改为大写字母,例如: Sem_post(ptr);图1-7定义了这个包裹函数. 每当你遇到一个以大写字母打头的函数名时,它就是我们所说的包裹函数.它调用一个名字相同但以相应小写字母开头的实际函数.当

《UNIX网络编程 卷1:套接字联网API(第3版)》——2.6 TCP连接的建立和终止

2.6 TCP连接的建立和终止 为帮助大家理解connect.accept和close这3个函数并使用netstat程序调试TCP应用,我们必须了解TCP连接如何建立和终止,并掌握TCP的状态转换图. 2.6.1 三路握手建立一个TCP连接时会发生下述情形. (1)服务器必须准备好接受外来的连接.这通常通过调用socket.bind和listen这3个函数来完成,我们称之为被动打开(passive open). (2)客户通过调用connect发起主动打开(active open).这导致客户T

《UNIX网络编程 卷1:套接字联网API(第3版)》——导读

**前言**本书面向的读者是那些希望自己编写的程序能使用称为套接字(socket)的API进行彼此通信的人.有些读者可能已经非常熟悉套接字了,因为这个模型几乎已经成了网络编程的同义词,但有些读者可能仍需要从头开始学习.本书想达到的目标是向大家提供网络编程指导.这些内容不仅适用于专业人士,也适用于初学者:不仅适用于维护已有代码,也适用于开发新的网络应用程序:此外,还适用于那些只是想了解一下自己系统中网络组件的工作原理的人. 书中的所有示例都是在Unix系统上测试通过的真实的.可运行的代码.但是,考

《UNIX网络编程 卷1:套接字联网API(第3版)》——2.7 TIME_WAIT状态

2.7 TIME_WAIT状态 毫无疑问,TCP中有关网络编程最不容易理解的是它的TIME_WAIT状态.在图2-4中我们看到执行主动关闭的那端经历了这个状态.该端点停留在这个状态的持续时间是最长分节生命期(maximum segment lifetime,MSL)的两倍,有时候称之为2MSL. 任何TCP实现都必须为MSL选择一个值.RFC 1122[Braden 1989]的建议值是2分钟,不过源自Berkeley的实现传统上改用30秒这个值.这意味着TIME_WAIT状态的持续时间在1分钟

《UNIX网络编程 卷1:套接字联网API(第3版)》——2.3 用户数据报协议(UDP)

2.3 用户数据报协议(UDP) UDP是一个简单的传输层协议,在RFC 768[Postel 1980]中有详细说明.应用进程往一个UDP套接字写入一个消息,该消息随后被封装(encapsulating)到一个UDP数据报,该UDP数据报进而又被封装到一个IP数据报,然后发送到目的地.UDP不保证UDP数据报会到达其最终目的地,不保证各个数据报的先后顺序跨网络后保持不变,也不保证每个数据报只到达一次. 我们使用UDP进行网络编程所遇到的问题是它缺乏可靠性.如果一个数据报到达了其最终目的地,但是

《UNIX网络编程 卷1:套接字联网API(第3版)》——1.3 协议无关性

1.3 协议无关性 图1-5中的程序是与IPv4协议相关的:我们分配并初始化一个sockaddr_in类型的结构,把该结构的协议族成员设置为AF_INET,并指定socket函数的第一个参数为AF_INET. 为了让图1-5中的程序能够在IPv6上运行,我们必须修改这段代码.图1-6所示的是一个能够在IPv6上运行的版本,其中改动之处用加粗的等宽字体突出显示. 我们只修改了程序的5行代码,得到的却是另一个与协议相关的程序:这回是与IPv6协议相关的.更好的做法是编写协议无关的程序.图11-11将

《UNIX网络编程 卷1:套接字联网API(第3版)》——2.14 小结

2.14 小结 UDP是一个简单.不可靠.无连接的协议,而TCP是一个复杂.可靠.面向连接的协议.SCTP组合了这两个协议的一些特性,并提供了TCP所不具备的额外特性.尽管绝大多数因特网应用(Web.Telnet.FTP和电子邮件)使用TCP,但这3个协议对传输层都是必要的.在22.4节中我们将阐述选用UDP替代TCP的理由.在23.12节中我们将阐述选用SCTP替代TCP的理由. TCP使用三路握手建立连接,使用四分组交换序列终止连接.当一个TCP连接被建立时,它从CLOSED状态转换到EST