RPC远程调用时TimeoutError:|RPC远程调用时TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。

补充,在公司测试时虚拟机和主机连接测试时又出现了:port 22:No route to host的问题,查了一下发现时因为ip网段不同,因为虚拟机事直接挂起的没有关机,所有ip网段还是家里的网段,重启下就变回来了。

最近要学gRPC,先看了看RPC,上班的时候虚拟机测试都没问题,回家后想用台式和笔记本两台电脑测试下,结果发现台式访问笔记本没问题,笔记本访问台式会报错,报错信息如下,
TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
RPC远程调用时TimeoutError:|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

    推荐阅读