客户机-服务器系统通信的三种常用方式

客户机-服务器系统通信

一、Socket

通过网络通信的进程需要使用一对socket

组成:一个IP地址和一个端口号连接组成。

过程:1.客户机发出连接请求,被主机赋予一个端口。

过程:2.服务器通过监听指定端口来等待进来的客户请求。

过程:3.形成一个CS连接(Sock对),在主机间传输数据包。所有的连接是唯一的。

Java提供的三种类型的Socket1.面向连接(TCPSocket

Java提供的三种类型的Socket2.无连接(UDPSocket

Java提供的三种类型的Socket3.多点传送Socket

回送loopback):同一主机上的CS通过TCP/IP通信时引用自己的IP

Socket通信常用&高效,但属于较为低级的分布式进程通信(因为Socket只允许在通信线程之间交换无结 构的字节流)。


二、远程过程调用(RPC

RPC用于通过网络连接系统。

用于RPC交换的消息有很好的数据结构,不再仅仅是数据包(IPC使用)。

每个独立的远程过程都有一个存根(该存根位于服务器端口,并编组参数),当客户机调用远程过程时,RPC系统调用合适的存根,并传递远程过程的参数。接着存根会向服务器发送一个消息,服务器接受到这个消息后会调用服务器上的过程(有必要的话通过同样的技术将返回值传回给客户机)。

外部数据表示XDR) 一种数据的机器无关表示 为了处理客户机和服务器系统数据表示的差别

绑定客户机和服务器端口的方法:1.绑定信息以固定端口地址形式预先固定

绑定客户机和服务器端口的方法:2.绑定通过集合点机制动态的进行


三、远程方法调用(RMI

允许线程调用远程对象的方法(如果对象位于不同的JVM上就认为它是远程的)

RPCRMI在两方面有根本的不同:

1.RPC支持子程序编程;RMI基于对象,支持调用远程对象的方法。

2.RPC传递的参数是普通数据结构;PMI可以传递对象参数。

RMI采用存根骨干实现远程对象。

1.客户机调用远程方法时,远程对象的存根(存根是远程对象的代理,驻留在客户机中)被调用。

2.存根将创建的(调用的方法名称和参数)发给服务器。

3.远程对象的骨干接收这个包,进行处理,并将结果打包传给客户机。


你可能感兴趣的:(操作系统知识大复习)