2014-11-14 3 views
1

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

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")