2010-07-05 12 views
5

के साथ कंप्यूटर पर विफल रहता है मेरे पास कई एनआईसी के साथ एक कंप्यूटर है - और यूडीपी क्लाइंट की प्रेषण विधि लगातार विफल हो जाती है। यहां कोड है:यूडीपी क्लाइंट मल्टीकास्ट कई एनआईसी

 private static void receiveData() 
    { 
     recvSock = new UdpClient(PORT); 
     //recvSock.Client.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastInterface, mainInterface); 
     recvSock.JoinMulticastGroup(IPAddress.Parse(IP), 50); 

     IPEndPoint iep = new IPEndPoint(IPAddress.Any, 0); 

     while (true) 
     { 
      byte[] data = recvSock.Receive(ref iep); 

      // Do not include messages from us 
      if (myIPs.Contains(iep.Address)) 
       continue; 

      string stringData = Encoding.ASCII.GetString(data, 0, data.Length); 
      Console.WriteLine("received: " + stringData); 

     } 
    } 

पोर्ट = 5000 और आईपी = 224.5.6.7 ताकि यह ठीक होना चाहिए। मुख्य समस्या यह है कि मैं सिर्फ recvSock.Receive() लाइन से पहले नहीं मिल सकता है। मैं wireshark पर आने वाले पैकेट देखता हूं - लेकिन कोड सिर्फ उन्हें संसाधित नहीं करेगा ...

विचार? अग्रिम में धन्यवाद!

दान

संपादित करें: मैं पुष्टि कर सकते हैं कि बहु एनआईसी समस्या का कारण है --- कोड एक एकल एनआईसी के साथ ठीक काम करता है। SetSocketOption लाइन को अपूर्ण करने से इसे कई एनआईसी के साथ काम करने की अनुमति मिलनी चाहिए, लेकिन यह अभी भी विफल रहता है .... विचार?

unsigned long interface; 
ip_mreq mreq; 

_parseHostname(_description->getInterface(), interface); 
mreq.imr_multiaddr.s_addr = _writeAddress.sin_addr.s_addr; 
mreq.imr_interface.s_addr = interface; 

setsockopt(_readFD, IPPROTO_IP, IP_ADD_MEMBERSHIP, 
       (char*)&mreq, sizeof(mreq)); 

इंटरफेस के साथ नेटवर्क प्राप्त कार्ड की (यूनिकास्ट) आईपी पते किया जा रहा है:

+0

स्पष्ट होने के लिए, यह "क्लाइंट" एप्लिकेशन [मशीन] में कई एनआईसी हैं या आपके सर्वर से कनेक्ट होने वाला सर्वर एकाधिक एनआईसी है ?? –

+0

चूंकि मुझे एक ही समस्या है, इसलिए मैं पुष्टि करने के लिए तैयार हूं: "क्लाइंट एप्लिकेशन [मशीन] में कई एनआईसी हैं"। आम तौर पर ग्राहक कई एनआईसी नेटवर्क पर सर्वरों से संबंधित है। एक सर्वर जिसमें एकाधिक एनआईसी होते हैं, केवल तभी महत्वपूर्ण होता है जब क्लाइंट एकाधिक क्लाइंट साइड एनआईसी के माध्यम से _same_ सर्वर देख सके। –

+0

@Dan क्या आपको कोई कामकाज मिला? मुझे एक ही समस्या है – J4N

उत्तर

0

इंटरफ़ेस हिस्सा निम्नलिखित कोड में महत्वपूर्ण हिस्सा है।

+1

यह उत्तर _may_ उपयोगी हो। लेकिन चूंकि यह मूल प्रश्न से मूल रूप से अलग सॉकेट पैकेज से शब्दावली का उपयोग करता है, ..., कौन बता सकता है? –

+1

इस उत्तर में केवल एक ही प्रासंगिकता है कि वे दोनों प्रश्न "आईपी" शब्द हैं। – BTownTKD

1

मैं एक ही मुद्दा इस पोस्ट पाया, तो कम से समाधान नहीं मिला था: 0.0.0.0 को UDP: Read data from all network interfaces

मूल रूप से बाध्य() काम नहीं करता है और आप में आबद्ध करने के लिए है() और हर पर JoinMulticastGroup() स्थानीय आईपी पता। इस के लिए माइक्रोसॉफ्ट से प्यार होना चाहिए।

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