Как обмениваться информацией между клиентом и сервером, используя Pyro - PullRequest
0 голосов
/ 06 марта 2020

У меня есть интерфейсный сервер и клиентская программа, предназначенные для обмена информацией между собой. Следующий код показывает, как сервер переднего плана может отправлять словарь клиентской программе, это работает через клиент с помощью удаленного вызова метода. Это работает нормально.

После этого клиент проверяет содержимое 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)
...