分布式计算编程基础---云计算笔记DAY4
进程间通信(interprocess communication,IPC)
概念:互相独立进程间通信及共同协作以完成某项任务的能力 进程:程序运行时的表示 (分布式计算的核心技术) 分布式计算中,两个或多个进程按约定的某种协议进行IPC。 协议:数据通信各参与进程必须遵守的一组规则。
分类:单播通信(unicast)和组播通信(multicast)
-
IPC设施 (1) 系统级IPC设施包括消息队列,共享内存等 作用:可开发各种网络软件或分布式计算系统 缺点:开发分布式应用往往工作量大且复杂 解决:抽象成高层IPC API(能更好的把注意力集中在应用逻辑上)
API(Application Programming Interface):应用编程接口或应用程序接口
-
IPC API四种基本操作 (1)发送(Send):由发送进程发起,向接收进程传输数据。允许发送进程识别接收发送进程和定义待传数据。 (2)接收(Receive):接收进程发起,接收发送进程发来的数据。允许接收进程识别发送进程和定义保存数据的内存空间,该内存随后被接受者访问 (3)连接(Connect):对面向连接的IPC,必须有允许在发起进程和指定进程间建立逻辑连击的操作:一个进程发出请求连接,另一个进程发出接受连接 (4)断开连接(Disconnect):对面向连接的IPC,允许通信双方关闭先前建立起来的某一逻辑连接。
Socket编程
平台: 在BSD,Linux等基于Unix的系统中,Socket API是操作系统的一部分。 在个人操作系统如MS-DOS,Windows NT,Mac-OS,OS/2中,以程序库形式提供的 (windows系统中,称Winsocket) 使用: JAVA语言将Socket API作为语言核心类的一部分提供给了用户 现状: Socket API是实现进程间通信的第一种编程设施 (1)Socket API已成为IPC编程事实上的标准,高层IPC设施基于Socket API实现 (2)对于响应时间要求较高或在有限资源平台上运行的应用最合适 理解: socket API就像进程接口的集合,是进程通信的“窗口”
据两种主要传输层协议分: UDP—数据包Socket(Datagram Socket) TCP—流式Socket(Stream Socket)
JAVA流式Socket API
-
两类: (1)ServerSocket:连接socket,用于接收连接 (2)Socket:数据socket,用于数据交换 程序流: (server端): 创建一个连接Socket,并监听请求 等待连接 创建一个数据socket去读写socket流 获取输入流到socket 从流中读数据, 获取输出流去写 / 关闭数据socket 关闭连接socket (客户端): 创建数据socket并请求连接 获取输出流去写到socket 写到流中 获取输入流读到socket 从流中读 关闭数据socket 方法及函数 (ServerSocket)
(Socket)