Простой клиент и сервер rpyc для отправки строковых данных

Я работаю над программой на Python, используя rpyc. Моя цель - создать простой сервер, который принимает байты данных (String) от клиента. Я новичок в Python и Rpyc. Вот мой код server.py:

from rpyc.utils.server import ThreadedServer # or ForkingServer

class MyService(rpyc.Service):
    # My service
    pass

if __name__ == "__main__":
    server = ThreadedServer(MyService, port = 18812)
    server.start()

Тогда есть мой код client.py:

from rpyc.core.stream import SocketStream
from rpyc.core.channel import Channel

b = SocketStream.connect("localhost", 18812)
c = Channel(b, compress=True)
c.send("abc")

b.close()
c.close()

Тем не менее при запуске моего client.py в консоли возникает ошибка. Если я правильно понимаю, я должен создать поток в server.py, который связан с клиентом. Это тот случай? Как я могу этого достичь?

1 ответ

Решение

Вы используете низкоуровневые примитивы, но вы не ставили над ними протокол. Во всяком случае, вам действительно не нужно идти туда. Вот что вы хотите сделать:

myserver.py

from rpyc.utils.server import ThreadedServer

class MyService(rpyc.Service):
    # My service
    def exposed_echo(self, text):
        return text

if __name__ == "__main__":
    server = ThreadedServer(MyService, port = 18812)
    server.start()

затем откройте оболочку Python и попробуйте

>>> import rpyc
>>> c = rpyc.connect("localhost", 18812)
>>> c.root.echo("hello")
'hello'

обратите внимание, что это использует сервис-ориентированный режим. Вы также можете использовать классический режим. просто беги bin/rpyc_classic.py а затем подключиться с помощью rpyc.classic.connect("host")

Другие вопросы по тегам