2010-07-12 16 views
5

पर यूडीपी प्रसारण भेजें मेरे पास एक पीसी है जिसमें दो नेटवर्क हैं जो विभिन्न नेटवर्क से जुड़े हैं (बहु गृह नेटवर्क सेटअप)। मैं दोनों नेटवर्क पर यूडीपी प्रसारण फ्रेम भेजना चाहता हूं। फ्रेम के प्रेषक आईपी पते एडाप्टर का आईपी पता होना चाहिए, जिसका उपयोग फ्रेम भेजने के लिए किया जाता है। गंतव्य पता सीमित ब्रॉडकास्ट पता होना चाहिए।विंडोज 7

ग्राहक आवेदन प्रशासनिक अधिकारों के साथ नहीं चलना चाहिए (यूएसी स्वीकार्य नहीं है)।

मैं इन यूडीपी फ्रेम को सीमित ब्रॉडकास्ट पते (255.255.255.255) में कैसे भेज सकता हूं? मैं इन फ्रेम को नेटवर्क्स ब्रॉडकास्ट पते (x.y.z.255) पर कैसे भेज सकता हूं?

मुझे पता है कि कच्चे सॉकेट के साथ ऐसा कैसे करें। लेकिन कच्चे सॉकेट का उपयोग केवल प्रशासनिक अधिकारों के साथ किया जा सकता है।

उत्तर

3

क्या आप दो सामान्य यूडीपी सॉकेट खोल नहीं सकते हैं और प्रत्येक इंटरफेस पते में से एक को बांध सकते हैं और फिर बस प्रसारण पते पर भेज सकते हैं?

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

+1

नहीं। सॉकेट बाध्यकारी इस सॉकेट द्वारा प्राप्त किए गए पैकेट को स्वीकार करते हैं। भेजे गए पैकेट को आईपी रूटिंग नियमों के अनुसार रूट किया जाता है। मैं इन एडाप्टर से जुड़े एडाप्टर और आईपी पते को पुन: सक्रिय कर सकता हूं और प्रत्येक आईपी पते के लिए एक नेटवर्क प्रसारण भेज सकता हूं। लेकिन यह सीमित ब्रॉडकास्ट पते पर नहीं भेजता है। – harper

+0

क्या आप निश्चित हैं? जब आप SendTo सॉकेट जारी करते हैं तो वह स्थानीय सॉकेट से जुड़ा होता है जिसका उपयोग भेजने के लिए किया जाता है ताकि प्राप्तकर्ता उत्तर दे सके। आप इसे क्रिया में देख सकते हैं क्योंकि आप बिना किसी बाध्यकारी या सॉकेट पर भेजने के रिकॉर्फम नहीं कर सकते हैं ... यदि आपके पास दो इंटरफेस हैं जो दोनों एक ही गंतव्य पर रूट कर सकते हैं तो ओएस यदि आप बाध्य नहीं हैं तो ओएस का चयन करता है। स्थानीय पता चुनने के लिए आप SendTo जारी करने से पहले बाध्य कर सकते हैं। –

+0

आह, मैं देखता हूं। आप सही हे! विंडोज 7 में बाइंड() कॉल फ़्रेम के प्राप्त और ट्रांसमिमिट को प्रभावित करता है। यह Windows XP व्यवहार में एक अंतर है, जहां सभी एडाप्टर को फ्रेम किसी भी मनमानी एडाप्टर पते के साथ भेजा गया है। आपको उचित स्रोत पते भेजने के लिए Windows XP के साथ रॉ सॉकेट की आवश्यकता है। लेकिन विंडोज 7 एडाप्टर को सीमित ब्रॉडकास्ट भेजता है जो सॉकेट से जुड़ा हुआ है। बहुत बहुत धन्यवाद, हार्पर – harper