У меня есть интерфейсный сервер и клиентская программа, предназначенные для обмена информацией между собой. Следующий код показывает, как сервер переднего плана может отправлять словарь клиентской программе, это работает через клиент с помощью удаленного вызова метода. Это работает нормально.
После этого клиент проверяет содержимое dict и пытается отправить ответ обратно на интерфейсный сервер, что облегчается внешним интерфейсом с помощью удаленного вызова метода для функции на клиент. Но это не работает, так как окно терминала, на котором работает клиент и интерфейс, просто говорит «Pyro Daemon Running», и больше ничего не может выполнить в это время.
РАБОЧИЙ КОД - диктант передается с внешнего интерфейса на клиент
Фронт-сервер -
@Pyro4.expose
class FoodMenufrontend(object):
def foodmenureturn(self):
#send the food dict to the front end server
return FoodDict
Pyro4.Daemon.serveSimple({
FoodMenufrontend: 'FOOD2',
}, host="192.168.1.3", port=9091, ns=False, verbose=True)
Клиентская программа -
def connecttofrontend():
ipaddress = "192.168.1.3"
FoodMenu = Pyro4.core.Proxy('PYRO:FOOD2@'+ ipaddress + ':9091')
return FoodMenu
def getfoodmenusfrontend(FoodMenu):
FoodDict = FoodMenu.foodmenureturn()
return FoodDict
classreturn = connecttofrontend()
FoodDict = getfoodmenusfrontend(classreturn)
КОД, КОТОРЫЙ НЕТ WORKING - передача строки от клиента к внешнему интерфейсу
Внешний интерфейс -
def connecttoclient():
ipaddress = "192.168.1.3"
Sendorders = Pyro4.core.Proxy('PYRO:FOOD2@'+ ipaddress + ':9092')
return Sendorders
def getordersclient(Sendorders):
orderlist = Sendorders.orderreturn()
print(orderlist)
return orderlist
classreturn2 = connecttoclient()
orderlist = getordersclient(classreturn2)
Клиент -
@Pyro4.expose
class Sendorders(object):
def orderreturn(self):
return ordernumbers
Pyro4.Daemon.serveSimple({
Sendorders: 'ORDERS',
}, host="192.168.1.3", port=9092, ns=False, verbose=True)