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"}]]'
我的目标是用不同的编程语言绑定 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"}]]'