2009-08-05 16 views
5

.NET का उपयोग करके, मैं किसी भी बंदरगाह पर किसी भी पोर्ट पर बाध्यकारी की आवश्यकता के बिना 255 पर भेजे गए udp प्रसारण पैकेट को कैसे सुन सकता हूं?किसी भी बंदरगाह पर प्रसारण पैकेट के लिए कैसे सुनें?

+0

मुझे लगता है कि बाध्यकारी की प्रकृति स्पष्ट रूप से इस परिदृश्य को रोकती है, लेकिन स्टैक ओवरफ्लो मुझे उन सभी प्रकार की चीजें सिखाता है जिन्हें मैं कभी नहीं जानता था। इस पर जवाब सुनने की प्रतीक्षा कर रहा है ... – grenade

उत्तर

4

मुझे लगता है कि इसे पूरा करने के लिए आपको यूडीपी की तुलना में निम्न स्तर की आवश्यकता होगी।

यदि मैं वास्तव में ऐसा करना चाहता था, तो मैं एक ओपन सोर्स पैकेट स्निफर/नेटवर्क विश्लेषक (Ethereal.com दिमाग में आता है) डाउनलोड करके शुरू करूंगा और यह देखने के लिए स्रोत को समझ सकता हूं कि वे पैकेट कैसे पढ़ते हैं।

आगे देखकर, मुझे tcpdump.org पर पैकेट कैप्चरिंग के बारे में काफी कुछ मिला।

क्षमा करें मैं विशिष्ट कोड स्निपेट नहीं दे सकता, मैं हमेशा एक विशिष्ट बंदरगाह से बांधना चाहता हूं।

0

आपको WinPCap या लिंक स्तर पर स्नीफ पैकेट के समान उपयोग करने की आवश्यकता होगी, फिर यूडीपी प्रसारण के लिए फ़िल्टर करें। क्षमा करें, मुझे नहीं लगता कि इसके लिए कोई उच्च स्तरीय एपीआई है।

6

मुझे एक रास्ता मिल गया। यह यह कैसे काम करता है:

mainSocket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP); 
mainSocket.Bind(new IPEndPoint(IPAddress.Parse("192.168.0.1"), 0)); 
mainSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, true);       

byte[] byTrue = new byte[4] { 1, 0, 0, 0 }; 
byte[] byOut = new byte[4] { 1, 0, 0, 0 }; 

// Socket.IOControl is analogous to the WSAIoctl method of Winsock 2 
mainSocket.IOControl(IOControlCode.ReceiveAll, //Equivalent to SIO_RCVALL constant of Winsock 2 
    byTrue, 
    byOut); 

//Start receiving the packets asynchronously 
mainSocket.BeginReceive(byteData,0,byteData.Length,SocketFlags.None,new AsyncCallback(OnReceive),null); 

async हैंडलर में, मैं एक mainSocket.EndReceive (...), डेटा पार्स और एक नया BeginReceive शुरू करता है, तो चाहता था (बहु रिसीवर बाहर से नियंत्रित) है।

एक आकर्षण की तरह काम करता है। क्रेडिट्स हितेश शर्मा (http://www.codeproject.com/KB/IP/CSNetworkSniffer.aspx)

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