2012-09-27 13 views
6

में ज़ीरोएमक्यू पर कच्चे बाइट भेजना मैं कुछ पायथन कोड पोर्ट कर रहा हूं जो बेहतर स्थिरता और क्लीनर इंटरफेस के लिए ज़ीरोएमक्यू में कच्चे टीसीपी सॉकेट का उपयोग करता है।पायथन

बल्ले से बाहर मैं देख सकता हूं कि कच्चे बाइट्स का एक भी पैकेट भेजा नहीं जा रहा है जैसा कि मैं उम्मीद कर रहा हूं।

कच्चे सॉकेट में:

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

ज़ीरोमक सॉकेट पर अपने डेटा मार्शलिंग का उपयोग करता है; यदि आप पैकेट को स्नीफ करते हैं, तो उन्हें बिल्कुल –

+0

@ बार्टकबानाकाइजज़ नहीं होना चाहिए - बहुत सच, धन्यवाद। अभी से मेरा जवाब नोटिस करें। –

उत्तर

4

ओह। वाह। मैंने अपने परीक्षण में एक बड़ी खामियों को नजरअंदाज कर दिया, जिस रिमोट सर्वर पर मैं परीक्षण कर रहा था, वह एक कच्चे टीसीपी कनेक्शन की अपेक्षा कर रहा था, न कि ज़ेडएमक्यू कनेक्शन।

बेशक ज़ेडएमक संदेश को स्थानांतरित करने में सक्षम नहीं था, इसने कनेक्शन को सफलतापूर्वक बातचीत भी नहीं की। जब मैंने स्थानीय रूप से परीक्षण किया तो मैं एक डमी जेडएमक्यू सर्वर के साथ परीक्षण कर रहा था, इसलिए यह ठीक काम करता था।

अगर मैं सर्वर कोड पोस्ट करता होता तो यह तुरंत समझ में आता कि यह समस्या थी।

किसी भी मामले में, झूठे अलार्म के लिए खेद है।