Sto eseguendo il porting di un codice Python che utilizza socket TCP non elaborati su ZeroMQ per una migliore stabilità e un'interfaccia più pulita.Invio di byte non elaborati su ZeroMQ in Python
Proprio fuori dal blocco vedo che un singolo pacchetto di byte non viene inviato come mi aspetto.
In raw socket:
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST, PORT))
sock.send('\x00\x01\x02 and some more raw bytes')
che è il codice di lavoro corrente. Questo è lo stesso codice utilizzando ZeroMQ:
import zmq
context = zmq.Context()
sock = context.socket(zmq.REQ) # this connection utilizes REQ/REP
sock.connect('tcp://{0}:{1}'.format(HOST, PORT))
sock.send('\x00\x01\x02 and some more raw bytes')
Ma quando ho ispezionare i pacchetti che vanno oltre la rete, non sono sicuramente quello che mi aspetto. Cosa mi manca qui?
Inoltre, quando si verifica questo codice sull'interfaccia di loopback (127.0.0.1
) con un server fittizio, sembra funzionare correttamente.
Utilizzo di Python 2.7 se è importante (unicode o whatnot).
Non c'è uscita, sto ispezionando il traffico di rete non elaborato, è quello che stai cercando? –
zeromq utilizza il proprio marshalling dei dati sui socket; se annusate i pacchetti, non devono essere esattamente uguali –
@BartekBanachewicz - molto vero, grazie. Notare la mia risposta da poco tempo. –