RPC远程调用时TimeoutError:|RPC远程调用时TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
补充,在公司测试时虚拟机和主机连接测试时又出现了:port 22:No route to host的问题,查了一下发现时因为ip网段不同,因为虚拟机事直接挂起的没有关机,所有ip网段还是家里的网段,重启下就变回来了。
最近要学gRPC,先看了看RPC,上班的时候虚拟机测试都没问题,回家后想用台式和笔记本两台电脑测试下,结果发现台式访问笔记本没问题,笔记本访问台式会报错,报错信息如下,
TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
文章图片
百度了一下相关问题太少,最开始以为是不是端口问题,换了几个端口不行,又想了想局域网通信是不是防火墙的问题的,果然发现台式机防火墙开着呢,关掉之后就好了,笔记本如果开防火墙同样连不上,确认是防火墙的问题了。
最后附上代码:
服务端:
#! /usr/bin/env python
# -*- coding: utf-8 -*-__author__ = 'xieyanke'from xmlrpc.server import SimpleXMLRPCRequestHandler, SimpleXMLRPCServer__HOST = '192.168.3.31'
__PORT = 8111class RPCHandler(SimpleXMLRPCRequestHandler):
rpc_paths = (
'/rpc',# 定义 RPC 接口的请求地址
)with SimpleXMLRPCServer((__HOST, __PORT), requestHandler=RPCHandler) as rpcserver:
rpcserver.register_introspection_functions()def formate_data(str):
return str.upper()
def func1(num):
return(num*num)rpcserver.register_function(formate_data, 'formate_data')# 这里 'formate_data' 可以不与自定义的方法名字相同,只要 server 端与 client 端做好约定即可
rpcserver.register_function(func1, 'call_rpc')# 这里 'formate_data' 可以不与自定义的方法名字相同,只要 server 端与 client 端做好约定即可rpcserver.serve_forever()
客户端:
#! /usr/bin/env python
# -*- coding: utf-8 -*-__author__ = 'xieyanke'import xmlrpc.client__HOST = '192.168.3.21'
__PORT = '8112'server = xmlrpc.client.ServerProxy('http://' + __HOST + ':' + __PORT + '/rpc')# 这里需要注意的是结尾的 ‘/' 必须存在,如果不绑定根,xmlrpc client 默认绑定的 url 为 host:port/RPC2# print(server.formate_data('hello,world!'))
print(server.call_rpc(4))
代码基本都是用的这位老师的,随便改了测试下:
【RPC远程调用时TimeoutError:|RPC远程调用时TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。】https://www.jianshu.com/p/2fc47e4a2bbb
推荐阅读
- CVE-2020-16898|CVE-2020-16898 TCP/IP远程代码执行漏洞
- SpringBoot调用公共模块的自定义注解失效的解决
- 移动端h5调试方法
- thinkphp|thinkphp 3.2 如何调用第三方类库
- 调取接口时报404错误(ID:16)
- 分享!如何分分钟实现微信扫二维码调用外部浏览器打开指定页面的功能
- “大脑”能自我调节吗()
- 低调做人是一种智慧
- 高以翔唱歌跑调、温柔抱娃的画面很温馨,曹爸边唱边哭却让人眼酸
- 黄褐斑如何内调(让肌肤白净惹人爱!)