分布式进程通信的释义 用一句最简单的话去描述计算机网络,那就是:计算机网络是分布在不同地理位置的多台独立的计算机系统的集合;“独立的计算机系统”意味着连网的每一台计算机的操作与资源是由自己的操作系统所管理;用户共享的网络资源及网络所能提供的服务功能最终是通过网络环境中的分布式进程通信来实现的。网络环境中的进程通信与单机系统内部的进程通信的主要区别:网络中主机的高度自治性;不是在同一个主机系统之中,没有一个统一的高层进行控制与管理;网络中一台主机对其它主机的活动状态位于其它主机系统中的各个进程状态这些进程什么时间参与网络活动希望与网络中哪一台主机的什么进程通信一概无从知道1.网络环境中分布式进程通信需要解决:进程命名与寻址方法多重协议的识别进程间相互作用的模式2.网络环境中进程标识在一台计算机中,不同的进程用进程号或进程标识(process ID)惟一地标识出来网络环境中完整的进程标识应该是:本地主机地址-本地进程标识远程主机地址-远程进程标识进程地址也叫做端口号(port number)3.多重协议的识别UNIX操作系统的TCP/IP的传输层就有TCP协议和UDP协议;网络环境中一个进程的全网惟一的标识需要一个三元组来表示。
进程通信服务是哪一层提供的 传输层
关于Android进程间通信 先来解释一下AIDL,这东西其实算是提供了一种自定义客户端和服务器之间RPC通信协议的通用方法,并由Android的编译器自动生成这个协议的接口实现程序,包括客户端的interface和服务器端的stub。其实你的需求用AIDL和socket都可以实现,AIDL比socket强的一点就是,用它定义了协议之后,客户端和服务器程序直接把aidl文件拿过去就可以自动生成实现这个协议的部分框架代码,而不需要自己重头写,而如果你用socket来做这个,那么可能客户端和服务器端分别需要写一些代码来把函数调用和socket通信之间做转换,这不光带来工作量的增加,也增加了因为客户端和服务器端代码不匹配造成的bug风险。当然,反过来说,socket也有灵活的优势,比如你的客户端和服务器可以不光是Android程序,也可以是其他支持同一协议的比如linux程序。然后说服务器程序的启动,其实不管用AIDL还是socket,跟服务器启动都是两码事,一般如果用service组件实现服务器,启动它是使用Context.startService方法,service组件自己提供了避免重复启动的机制,与AIDL和socket无关,service启动之后,如果是socket方式则由service程序开socket端口(但这个端口需要由其他方法通知客户端,因为想用的端口有。