美文网首页
记一次python XML-RPC简单学习

记一次python XML-RPC简单学习

作者: imjoffrey | 来源:发表于2018-10-04 14:24 被阅读0次

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

    今天简单记录一下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简单学习

          本文链接:https://www.haomeiwen.com/subject/wvsxaftx.html