gpt4 book ai didi

python XMLRPC函数错误

转载 作者:太空宇宙 更新时间:2023-11-03 18:34:57 25 4
gpt4 key购买 nike

我尝试通过 XML RPC 连接两台计算机,但总是收到“[Errno -2] 名称或服务未知”消息。有时它有效,有时则无效,我不知道我做错了什么。这是我正在运行的代码

客户端(在一台计算机上):

from xmlrpclib import ServerProxy
import time
while True:
try:
# robot_file = open("robot_file", "r")
# robot_uri = robot_file.readline()
robot_uri = "http://pototo.local:12345"
print("robot uri: " + robot_uri)
server = ServerProxy(robot_uri)
# robot_file.close()
# os.remove("robot_file")
print('removed robot_file')
break
except BaseException:
print("trying to read robot uri")
time.sleep(1)
pass
print('processing request')
while True:
try:
print (server.getLocationInfo(2))
time.sleep(1)
except BaseException as e:
print("trying to read request")
print (e)
time.sleep(1)

服务器(在另一台地址为“http://pototo.local:12345 ”的计算机上)

#!/usr/bin/env python
'''
This files runs indefinitelly in a computer and waits for a client
to request connection to a/the robot(s)
'''

#import roslib;
#import rospy
#from sensor_msgs.msg import CompressedImage
#from sensor_msgs.msg import Image
#from std_msgs.msg import String

from SimpleXMLRPCServer import SimpleXMLRPCServer
import subprocess
from time import sleep
import string

pub_data = None # gets the data from the publisher

python_string = string
location = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
occupied = ['n', 'n', 'n', 'n', 'n', 'n', 'n', 'n', 'n', 'n']
flagged = ['n', 'n', 'n', 'n', 'n', 'n', 'n', 'n', 'n', 'n']
dateTime = ['None','None','None','None','None','None','None','None',
'None','None']
licensePlate = ['None','None','None','None','None','None','None',
'None','None','None']
gps = ['None','None','None','None','None','None','None','None',
'None','None']

def parking_callback(msg):

#parses the string data
infoList = msg.data.split(" ")
location[int(infoList[0]) -1] = infoList[0]
occupied[int(infoList[0]) -1] = infoList[1]
flagged[int(infoList[0]) -1] = infoList[2]
dateTime[int(infoList[0]) -1] = infoList[3]
licensePlate[int(infoList[0]) -1] = infoList[4]

def getLocationInfo(locationNum):
if ((locationNum > 10) and (locationNum < 1)):
print "Out of bounds location\n"
return
index = locationNum - 1
description = ('ID', 'occupied', 'flagged', 'dateTime',
'licensePlate', 'gps')
descrip_data = (location[index], occupied[index],
flagged[index], dateTime[index],
licensePlate[index], gps[index])
return dict(zip(description, descrip_data))

def start_process():
'''
Function that allows client to retrieve data from this server
'''
robot_address = ['http://G46VW:11311', '192.168.1.81']
print(str(len(robot_address)) + ' robots are connected \n')
# robot_address.append(os.environ['ROS_MASTER_URI'])
robot_address.reverse() # change uri as first key
return robot_address
# return location

def get_pub_data(published_data):
'''
Retrieves the published data from ROS and stores it on the
pub_data variable
'''
# pub_data = published_data
pass

if __name__ == '__main__':
#rospy.init_node('sendGUI')
#rospy.Subscriber('/parkingInfo', String, parking_callback)
import platform
hostname = platform.node()
port = 12345
server = SimpleXMLRPCServer((hostname, port))

# run subscriber here
# rospy.Subscriber("move", String, rover.set_move)

# thread to run the subscriber
#from threading import Thread
#spin_thread = Thread(target=lambda: rospy.spin())
#spin_thread.start()

# store server address for meta client usage
start = "http://"
address = start + hostname + ":" + str(port)
print('Robot URI: ' + address)
uri_file = open("robot_file", "w")
uri_file.write(address)
uri_file.close()

# send URI to client
# import os
# os.system("rsync -v -e ssh robot_file pototo@192.168.1.102:~/Desktop/gui")

server.register_function(start_process, "start_process")
server.register_function(getLocationInfo, "getLocationInfo")
#while not rospy.is_shutdown():
while True:
try: # handle requests for the rest of the program
print('\nwaiting for a client to request...\n\n')
server.handle_request()
except BaseException: #rospy.ROSInterruptException:
print('exiting ROS node')
# spin_thread.kill()
from sys import exit
exit()

该服务器旨在作为 ROS 节点运行,但我在这里将其转换回正常的 python,以防万一您想运行它。如果您想运行它,请确保相应地更改 URI。

非常感谢

最佳答案

大多数情况下,该错误仅意味着无法连接到指定的主机。您是否尝试过对这些机器执行 ping 操作以确保它们正常运行?也可能是 python 无法解析 .local 主机(如果我没记错的话,它是 Apple bonjour 协议(protocol)的一部分),您可能需要使用 IP 地址。

关于python XMLRPC函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21768341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com