RPC协议

释放双眼,带上耳机,听听看~!

1.RPC

        RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

       RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用过程接收答复信息,获得进程结果,然后调用执行继续进行。

RPC协议

2.原理

运行时,一次客户机对服务器的RPC调用,其内部操作大致有如下十步:

1.调用客户端句柄;执行传送参数

2.调用本地系统内核发送网络消息

3.消息传送到远程主机

4.服务器句柄得到消息并取得参数

5.执行远程过程

6.执行的过程将结果返回服务器句柄

7.服务器句柄返回结果,调用远程系统内核

8.消息传回本地主机

9.客户句柄由内核接收消息

10.客户接收句柄返回的数据

3.Python下的XML-RPC

简单实例:hello xmlprc

服务器端:xmlrpc_server.py


1
2
3
4
5
6
7
8
9
10
11
12
13
14
1import SimpleXMLRPCServer
2
3class MyObject:
4    def sayHello(self):
5        return "hello xmlprc"
6
7obj = MyObject()
8server = SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost", 8088))
9server.register_instance(obj)
10
11print "Listening on port 8088"
12server.serve_forever()
13
14

 客户端:xmlrpc_client.py


1
2
3
4
5
6
7
8
1# _*_ coding:utf-8 _*_
2
3from xmlrpc.client import ServerProxy
4
5if __name__ == '__main__':
6    server = ServerProxy("http://localhost:8888") # 初始化服务器
7    print (server.get_string("cloudox")) # 调用函数并传参
8

打开一个终端,输入命令,运行服务器端程序:


1
2
3
4
1python xmlrpc_server.py
2
3打开另一个新的终端,输入命令,运行客户端程序:
4

1
2
3
4
1python xmlrpc_client.py
2
3可以看到客户端控制台上输出了:
4

RPC协议

给TA打赏
共{{data.count}}人
人已打赏
安全经验

英文站如何做Google Adsense

2021-10-11 16:36:11

安全经验

安全咨询服务

2022-1-12 14:11:49

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索