2009-04-20 12 views
6

का उपयोग कर कच्चे ईथरनेट फ्रेम्स मैं लिनक्स से विंडोज तक संचार पुस्तकालय पोर्ट कर रहा हूं। मुझे पता है कि मेरा दृष्टिकोण अधिकांश भाग के लिए क्या है। लाइब्रेरी सभी संचारों के लिए सभी कच्चे ईथरनेट स्तर फ्रेम का उपयोग करती है।विंसॉक

जिस लाइब्रेरी से मैं पोर्टिंग कर रहा हूं वह PF_PACKET परिवार और संरचना sockaddr_ll का उपयोग करता है। एमएसडीएन विंसॉक साइट के माध्यम से ब्राउज़ करने के बाद, मुझे समकक्ष परिवार/संरचना नहीं मिली है। मेरा दृष्टिकोण यहां क्या होना चाहिए?

मेरे पास कुछ विचार हैं, लेकिन मुझे यकीन नहीं है कि वे अच्छे विचार हैं मैं अनिर्दिष्ट के लिए PF_UNSPEC का उपयोग कर सकता हूं। मैं सिर्फ पीएफ_PACKET प्रतिनिधित्व करता हूं (यह एक हस्ताक्षरित छोटा है) मैं विंडोज़ में अपना खुद का sockadddr_ll संरचना भी बना सकता हूं।

इनमें से कोई भी विचार मेरे लिए अच्छा प्रतीत नहीं होता है, वे सिर्फ ऐसे हैक की तरह लगते हैं जो वास्तव में काम करने की संभावना नहीं रखते हैं।

यदि किसी के पास कोई सुझाव है, तो मैं इसकी सराहना करता हूं।

उत्तर

3

मुझे लगता है कि आप कच्चे सॉकेट का जिक्र कर रहे हैं (जहां आपको नेटवर्क परत, परिवहन परत और एप्लिकेशन परत जानकारी लिखनी है)। नए विंडोज संस्करण (एक्सपी एसपी 2 और ऊपर) कई प्रतिबंधों के साथ कच्चे सॉकेट के लिए बहुत सीमित समर्थन है।

More info

समाधान ("रॉ सॉकेट पर सीमाएं" के लिए नीचे स्क्रॉल), मुझे विश्वास है, WinPcap, जो आप send raw packets उन प्रणालियों पर करने की अनुमति देता का उपयोग करने के लिए है।

+0

ठीक है, कच्चे सॉकेट पर सीमाएं मुझ पर लागू नहीं होती हैं। मेरा आवेदन केवल दूसरी परत के रूप में उच्च हो जाता है। यही है, मुझे केवल ईथरनेट फ्रेम को प्रस्तुत/प्राप्त करने की आवश्यकता है, कोई टीसीपी/यूडीपी/आईपी की आवश्यकता नहीं है। – devin

+1

असल में यह करता है। इसे WinPcap के साथ कच्चे पैकेट भेजने का उदाहरण देखें, और आपको जो चाहिए वह आपको मिलेगा :) – Aziz

+0

विंडोज़ में परत 3 के नीचे कुछ भी नहीं है। – Aziz

संबंधित मुद्दे