Aiomas RPC Python 3.6
Posted
技术标签:
【中文标题】Aiomas RPC Python 3.6【英文标题】: 【发布时间】:2018-02-19 13:37:52 【问题描述】:我的目标是用不同的编程语言绑定 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()
请告诉我有什么问题。有必要了解才能在其他语言中实现这一点。非常感谢任何提示
【问题讨论】:
【参考方案1】:我多次阅读文档,但我不明白如何编写包的标题。结果,我发现最后一个字节是包的长度。一切正常。 这是一个示例包
data='[0, 0, ["methood", ["args"], "kwargs":"if exists"]]'
hex(len(data)) --> 0x35
b'\x00\x00\x00\x35[0, 0, ["methood", ["args"], "kwargs":"if exists"]]'
【讨论】:
以上是关于Aiomas RPC Python 3.6的主要内容,如果未能解决你的问题,请参考以下文章