记一次python XML-RPC简单学习

小白刚入门,如有不足之处请多指教。谢谢!

今天简单记录一下XML-RPC 的学习过程。

1.什么是XML-RPC?

最简单的方式当然是百度啦。但是我基础太差了,看百度都头大:

XML-RPC的全称是XML Remote Procedure Call,即XML(标准通用标记语言下的一个子集)远程过程调用。它是一套允许运行在不同操作系统、不同环境的程序实现基于Internet过程调用的规范和一系列的实现。这种远程过程调用使用http作为传输协议,XML作为传送信息的编码格式。Xml-Rpc的定义尽可能的保持了简单,但同时能够传送、处理、返回复杂的数据结构。这个过程也被大家称为“分布式计算”。

我的理解就是在一台电脑上的数据,通过xml-rpc的形式,可以在另外一台电脑上访问。如果看百度不清楚还是直接看程序吧:

(选自 https://blog.csdn.net/comprel/article/details/72633406 )


2.两个库

类库:xmlrpclib    一般使用在客户端,这个模块用来调用注册在XML-RPC服务器端的函数,xmlrpclib并不是一个类型安全的模块,无法抵御恶意构造的数据,这方面的一些处理工作需要交给开发者自己。

类库:SimpleXMLRPCServer  一般是用在服务器端,这个模块用来构造一个最基本的XML-RPC服务器框架(单线程服务器)

大致用法:使用SimpleXMLRPCServer模块运行XMLRPC服务器,在其中注册服务器提供的函数或者对象;然后在客户端内使用xmlrpclib.ServerProxy连接到服务器,想要调用服务器的函数,直接调用ServerProxy即可。

服务端:

第4行:服务端定义了get_power这个函数,其结果是n^m。

第7行:“0.0.0.0”输入自己的localhost,后面的“8081”是端口。(要注意端口是否被占用,防火墙是否开放该端口,链接:https://jingyan.baidu.com/article/624e745902cebc34e9ba5a58.html)(入站规则和出站规则都改一下)

tips:

1. 服务端和客户端要在一台主机上做测试的话,要不全写成"localhost"或者全写成"127.0.0.1"形式,要不全写成自己的内网IP或外网IP,如"192.168.0.10"形式;

2. 不在同一个主机上的话,服务端本地地址不能写成"127.0.0.1"或者"localhost",而要写成自己的内网IP或外网IP形式。

3. 最简单一种方法:服务端地址写成""形式。

第9行:注册该函数。

第10行:开始启动服务器。

客服端:

第1行:xmlrpclib 及 simplexmlrpcserver都是python2自带的不需要安装第三方库。

第3行:客服端的localhost和之前设定的端口。(为了更好的区别不同服务)

第4、5行:调用在服务端定义的函数。

简单的xml-rpc就完成啦。看程序比看文字好理解很多,大致就是远程调用服务端上的数据、函数等等。只是其调用方式使用http作为传输协议,XML作为传送信息的编码格式。(http协议和xml编码格式可以了解一下(菜鸟教程):http://www.runoob.com/http/http-tutorial.html    http://www.runoob.com/xml/xml-tutorial.html)

3.一些简单的使用:

https://blog.csdn.net/comprel/article/details/72633482

https://blog.csdn.net/comprel/article/details/72633406

4.记录一些遇到的问题及经验:

connection refused:

检查端口是否被占用;检查防火墙设置出、入站规则;检查localhost是否正确;

如何查看localhost

windows一般是127.0.0.1.但是要注意区别localhost、ip、127.0.0.1。linux可以尝试在命令行中 hostname -i 查看

localhost、127.0.0.1区别(资料来自:https://www.cnblogs.com/rendd/p/5928733.html)

localhost意为本地主机,指这台计算机,是给回路网络接口的标准主机名,对应的IP地址为127.0.0.1,可访问本地服务器的web项目(http://localhost)。

1.localhost不通过网卡传输,不受防火墙和网卡限制;而127.0.0.1则依赖于网卡,会受到防火墙和网卡的限制。

2.localhost访问时带着本机当前用户的权限;而用IP访问时,是通过网络再去访问主机,涉及到网络用户权限。

3.因为用localhost访问时不会解析成IP,也就不会占用网络资源,因此一般情况下用localhost更方便快捷。

无法访问本地的localhost怎么办呢?:

打开http://127.0.0.1/ 看是否能访问IIS(互联网信息服务)的默认网页,能访问则说明IIS已经成功开启,否则检查IIS是否在本机安装且开启;

开始--命令(cmd)--ping localhost,看返回的数据是否为127.0.0.1,如果是则说明可以解析localhost,否则打开C:\WINDOWS\system32\drivers\etc\host文件看里面有没有127.0.0.1 localhost,添加好后再去访问localhost;

关闭电脑上的防火墙试试,或检查电脑上是否有恶意插件;

实在不行将IIS卸载掉,重新安装一次。

电脑没有iis:

这是我遇到最可恶的事情了。我的是win10ghost版,为了系统稳定很多功能都精简掉了。如果和我一样的朋友,快点重装吧,不要多想了。

你可能感兴趣的:(记一次python XML-RPC简单学习)