एक अलग सॉकेट के रूप में Glomek का सुझाव दिया, एक ही रास्ता है कि मैं इस निश्चित करने के लिए विंडोज एक रॉ सॉकेट, जैसे उपयोग करने के लिए है पर पता प्रत्येक इंटरफेस पर खोलने की
बाहर,
SOCKET s = socket(AF_INET, SOCK_RAW, IPPROTO_IP);
प्रत्येक इस सॉकेट से प्राप्त होगा IP packet बनें, जिसमें स्रोत और गंतव्य दोनों पते शामिल हैं। जिस कार्यक्रम पर मैं काम करता हूं, मुझे एसआईओ_आरसीवीएल विकल्प का उपयोग करके सॉकेट को विशिष्ट मोड में रखना होगा। ऐसा करने का मतलब है कि मुझे नेटवर्क पर इंटरफ़ेस "देखता" प्रत्येक आईपी पैकेट मिलता है। मेरे आवेदन के लिए स्पष्ट रूप से पैकेट निकालने के लिए मुझे आईपी और टीसीपी/यूडीपी हेडर में पते और बंदरगाहों का उपयोग करके डेटा फ़िल्टर करना होगा। जाहिर है, यह आपकी दिलचस्पी रखने की तुलना में शायद अधिक ओवरहेड है। मैं इसे केवल यह कहने के लिए जिक्र करता हूं - मैंने कच्चे सॉकेट का उपयोग कभी भी विचित्र मोड में डाले बिना नहीं किया है। इसलिए मुझे यकीन नहीं है कि क्या आप इसे INADDR_ANY से जोड़ सकते हैं और उस बिंदु से नियमित सॉकेट के रूप में इसका उपयोग कर सकते हैं या नहीं। ऐसा लगता है कि आप कर सकते हैं; मैंने अभी कोशिश नहीं की है।
संपादित करें: विंडोज पर कच्चे सॉकेट के संबंध में सीमाओं के लिए article पढ़ें। मेरी परियोजना पर मुझे सबसे बड़ी बाधा आई थी कि विंडोज 2000 और बाद में कच्चे सॉकेट खोलने के लिए प्रशासक समूह का सदस्य होना चाहिए।
स्रोत
2009-03-03 05:34:15
धन्यवाद, यही वह है जिसे मैं ढूंढ रहा था। बहुत बुरा यह पाइथन सॉकेट के मॉड्यूल द्वारा अभी तक समर्थित नहीं है - हालांकि मैंने इस प्रश्न में libc निर्दिष्ट किया था। :) – Readonly