简单的rpyc客户端和服务器,用于发送字符串数据

时间:2014-11-14 13:07:44

标签: python client server rpyc

我正在使用rpyc在python中编写一个程序。我的目标是创建一个从客户端接受数据字节(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 个答案:

答案 0 :(得分:2)

您正在使用低级原语,但您没有对其进行协议。无论如何,你真的不需要去那里。这是你想做的事情:

myserver.py

import rpyc
from rpyc.utils.server import ThreadedServer

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

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

然后打开python shell并尝试

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

请注意,这是使用面向服务的模式。你也可以使用经典模式。只需运行bin/rpyc_classic.py,然后使用rpyc.classic.connect("host")

进行连接