1

rpyc を使用して Python でプログラムを作成しています。私の目標は、クライアントからデータ (文字列) のバイトを受け入れる単純なサーバーを作成することです。私は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 にストリームを作成する必要があります。そうですか?どうすればそれを達成できますか?

4

1 に答える 1

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シェルを開いて試してください

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

これはサービス指向モードを使用していることに注意してください。クラシックモードも使えます。実行bin/rpyc_classic.pyしてから接続するだけですrpyc.classic.connect("host")

于 2014-11-14T16:26:37.900 に答える