Я не уверен, что я делаю это правильно, но я хотел бы иметь возможность отправлять сообщения на мой сервер под управлением ZMQ из обычных TCP-соединений. На сервере выполняется Python ZMQ на порту 5555
с использованием TCP transport
. Я хотел бы иметь возможность отправлять ему сообщения с использованием разных клиентов (Python, Java, PHP), которые используют обычный TCP. Это то, что я до сих пор:Отправлять сообщения на сервер ZeroMQ с использованием обычного TCP, возможно?
SERVER
context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind("tcp://*:5555")
while True:
message = socket.recv()
print message
socket.send('{"name":"someone"}')
КЛИЕНТ
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('127.0.0.1', 5555))
s.send('Hello, World!')
data = s.recv(1024)
print data
Печать data
на клиенте не дает мне сообщение я ожидал. Я получаю это: �
. Я пытался делать bytes(data).decode('utf8')
думать, что я получаю был массив байтов, но я получаю следующее сообщение об ошибке:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 0: ordinal not in range(128)
Я просто интересно: возможно ли это вообще? Или я делаю что-то неправильно? Кроме того, рекомендуется ли это?
Причина, по которой я не использую ZMQ для клиентов, заключается в том, что я хочу уменьшить количество зависимостей (например, ZeroMQ).
Благодарим за помощь.
Спасибо! Именно это и было моим вопросом. Я рассмотрю использование простого TCP с обеих сторон. – Sthe