Aiomas RPC Python 3.6

Aiomas RPC Python 3.6

我的目标是用不同的编程语言绑定 TCP RPC 服务器 aiomas 和客户端。 我正在设置连接,但既没有收到来自服务器的响应,也没有收到响应。 文档说:

https://media.readthedocs.org/pdf/aiomas/1.0.3/aiomas.pdf

 Page 26: - On the RPC level, it a three-tuple:
[function, [arg0, arg1, ...], {kwarg0: val0, kwarg1: val1}]
function is a string containing the name of an exposed functions; The type of the arguments and keyword arguments may vary depending on the function.

这个简单的服务器:

import aiomas

class Server:
    router = aiomas.rpc.Service()

    @aiomas.expose
    def ping(self, i):
        print('Ping receive data: {}'.format(i))
        return i


if __name__ == '__main__':
    server = aiomas.run(aiomas.rpc.start_server(
        ('127.0.0.1', 5000),
        Server())
    )
    print('Server run')
    aiomas.run(server.wait_closed())

这是我的问题 tcp 客户端

import socket
import pickle


MESS = ['ping', [1]]

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('127.0.0.1', 5000))
s.settimeout(1.5)
s.send(pickle.dumps(MESS))
data = s.recv(1024)
s.close()

请告诉我有什么问题。有必要了解才能在其他方面实现这一点languages.Much感谢任何提示

看了好几遍文档,还是没看懂包头是怎么写的。结果发现最后一个字节是包的长度。一切正常。 这是一个示例包

data='[0, 0, ["methood", ["args"], {"kwargs":"if exists"}]]'

hex(len(data)) -->  0x35

b'\x00\x00\x00\x35[0, 0, ["methood", ["args"], {"kwargs":"if exists"}]]'