2009-01-12 26 views
7

मेरे पास एक ऐसा एप्लिकेशन है जो प्रसारण संदेशों को भेजता है और प्रतिक्रिया पैकेट के लिए सुनता है। नीचे कोड स्निपेट है।सभी नेटवर्क एडेप्टर से प्रसारण संदेश भेजें

m_socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); 
m_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1); 

m_socket.Bind(new IPEndPoint(IPAddress.Any, 2000)); 

m_socket.BeginSendTo(
        buffer, 
        0, 
        buffer.Length, 
        SocketFlags.None, 
        new IPEndPoint(IPAddress.Broadcast, 2000), 
        Callback), 
        null 
        ); 

जब मैं एप्लिकेशन चलाता हूं तो प्रसारण संदेश नहीं भेजा जा रहा था। मेरी मशीन पर मेरे पास तीन नेटवर्क एडेप्टर हैं। एक मेरा स्थानीय नेटवर्क एडाप्टर है और अन्य दो वीएमवेयर नेटवर्क आभासी एडाप्टर हैं। जब मैं अपना आवेदन चलाता हूं तो मैं देख सकता हूं (वायरशर्क नेटवर्क कैप्चर का उपयोग करके) कि प्रसारण संदेश वीएमवेयर नेटवर्क एडाप्टर में से एक से भेजा जा रहा है।

मैं कोड को संशोधित करना चाहता हूं ताकि प्रसारण संदेश पीसी पर सभी नेटवर्क एडेप्टर से भेजा जाएगा। उसे करने का सबसे अच्छा तरीका कौन सा है?

+0

क्या आप अपनी समस्या का समाधान कर सकते हैं? –

उत्तर

11

आप अपने सभी आईपी पते (और बहुत कुछ) प्राप्त करने के लिए निम्नलिखित का उपयोग कर सकते हैं। तो जब आप अपना मल्टीकास्ट भेजते हैं तो आप उस विशिष्ट आईपी को सूची और बाध्य (जैसे जॉन बी ने कहा) के माध्यम से फिर से शुरू कर सकते हैं।

foreach (var i in System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()) 
    foreach (var ua in i.GetIPProperties().UnicastAddresses) 
     Console.WriteLine(ua.Address); 
+0

+1 उपलब्ध एनआईसी की सूची के माध्यम से पुनरावृत्त करने के लिए +1। : डी –

6

जब आप बाइंड() को कॉल करते हैं, तो आप स्थानीय आईपी एंड पॉइंट सेट कर रहे हैं। IPAddress का उपयोग करने के बजाय। कोई भी, उस एनआईसी के आईपी पते का उपयोग करें जिसे आप भेजना चाहते हैं। आपको प्रत्येक एनआईसी के लिए इसे अलग से करने की आवश्यकता होगी।

-1

आप आईपीएड्रेस का उपयोग कर सकते हैं। टीसीपी लिस्टर बनाने के दौरान। यह टीसीपी श्रोता को सभी इंटरफेस

+1

मैं इसकी पुष्टि नहीं कर सकता। –

+0

ओपी एक श्रोता के लिए एक प्रसारण मांग रहा है – pmcb

1

जांचें http://salaam.codeplex.com/ मैं और मेरे मित्र ने सलाम नामक एक कक्षा पुस्तकालय विकसित किया। स्रोत कोड डाउनलोड करें या इसका उपयोग करने के लिए बाइनरी (.dll) का उपयोग करें।

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