2012-09-27 4 views
6

더 나은 안정성과 깨끗한 인터페이스를 위해 ZeroMQ에 원시 TCP 소켓을 사용하는 일부 Python 코드를 이식합니다.Python에서 ZeroMQ를 통해 raw 바이트 보내기

박쥐 오른쪽에서 나는 예상대로 원시 바이트의 단일 패킷이 보내지지 않음을 알 수 있습니다. 원시 소켓에서

:

현재 작업 코드입니다
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') 

. 이 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') 

하지만 네트워크를 통해가는 패킷을 검사 할 때, 그들은 내가 기대하고있는 무슨을 확실히 아니에요. 내가 여기서 무엇을 놓치고 있니?

또한 더미 서버로 루프백 인터페이스 (127.0.0.1)에서이 코드를 테스트 할 때 잘 작동하는 것처럼 보입니다.

파이썬 2.7이 중요한 경우 (유니 코드 또는 기타).

+0

출력이 없으며 원시 네트워크 트래픽을 검사하고 있습니다. 찾고있는 것이 맞습니까? –

+1

zeromq는 소켓에서 자체 데이터 마샬링을 사용합니다. 패킷을 냄새 맡는다면 정확하게 같을 필요는 없습니다 –

+0

@BartekBanachewicz - 정말 고마워요. 지금 내 대답을 주목하라. –

답변

4

오. 와우. 내 테스트의 주요 결함을 간과했는데, 내가 테스트했던 원격 서버는 ZMQ 연결이 아닌 원시 TCP 연결을 기다리고 있었다.

물론 ZMQ가 메시지를 전송하지 못했지만 연결을 성공적으로 협상하지 못했습니다. 로컬에서 테스트했을 때 더미 ZMQ 서버를 테스트 중이므로 제대로 작동합니다.

서버 코드를 게시했다면 즉시 문제가 발생했을 것입니다.

어쨌든 잘못된 경보에 죄송합니다.

관련 문제