बस एक ही समस्या का अनुभव किया, और यह साझा करना चाहता था कि यह मेरे लिए क्या तय करे।
संक्षेप में: ऐसा लगता है कि विंडोज फ़ायरवॉल किसी भी तरह से इस अजीब व्यवहार का कारण था, और केवल सेवा को अक्षम करने में मदद नहीं करता है। आपको विंडोज फ़ायरवॉल इनबाउंड नियम सूची में विशिष्ट प्रोग्राम (निष्पादन योग्य) के लिए आने वाले यूडीपी पैकेट को स्पष्ट रूप से अनुमति देना होगा।
पूर्ण केस विवरण के लिए, पढ़ें।
मेरा नेटवर्क सेटअप है: मेरी (प्राप्त करने वाली) मशीन का आईपी 1 9 2.168.1.2 था, मशीन भेजने का आईपी 1 9 2.168.1.50 था, और दोनों मशीनों पर सबनेट मास्क 255.255.255.0 था। मेरी मशीन विंडोज 7 x64 चल रही है।
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 0);
sock.Bind(iep);
sock.EnableBroadcast = true;
EndPoint ep = (EndPoint)iep;
byte[] buffer = new byte[1000];
sock.ReceiveFrom(buffer, ref ep);
प्रारंभ में यह काम नहीं किया, जब तक कि मुझे लगता है कि सॉकेट से एक प्रसारण पैकेट भेजा से पहले मैं इस पर ReceiveFrom
फोन:
इस कोड (मोटे तौर पर) है कि मैं प्रयोग किया जाता है। अर्थात। ReceiveFrom
कॉल करने से पहले इस लाइन को जोड़ने:
sock.SendTo(someData, new IPEndPoint(IPAddress.Broadcast, somePort))
जब मैं नहीं सॉकेट प्राप्त करने से पहले प्रसारण पैकेट भेजा था, भेजे प्रसारण पैकेट यह द्वारा प्राप्त नहीं किया गया है, भले ही वे Wireshark में छपी (पैकेट के गंतव्य 255.255 था। 255.255)।
मैंने सोचा कि ऐसा लगता है कि फ़ायरवॉल आने वाले पैकेट के साथ गड़बड़ कर रहा है (जब तक कि किसी प्रकार का यूडीपी छेद आउटगोइंग पैकेट द्वारा पहले खोला नहीं जाता है - भले ही मैंने सुना है कि यूडीपी छेद पंचिंग किसी भी तरह से प्रसारण पैकेट पर लागू नहीं होता है), तो मैं सेवाओं और अक्षम विंडोज फ़ायरवॉल सेवा पूरी तरह से चला गया। यह कुछ भी नहीं बदला।
हालांकि, बाकी सब कुछ करने के बाद, मैंने फ़ायरवॉल सेवा को फिर से सक्षम किया, और प्रोग्राम को फिर से चलाने की कोशिश की। इस बार, फ़ायरवॉल प्रॉम्प्ट ने मुझसे पूछा कि क्या मैं फ़ायरवॉल के माध्यम से MyProgram.vshost.exe प्रक्रिया (मैं विजुअल स्टूडियो में डिबगिंग कर रहा था) को अनुमति देना चाहता हूं, मैंने इसे स्वीकार किया, और वॉयला - सब कुछ काम किया! आने वाले पैकेट अब प्राप्त किए जा रहे थे!
क्या आप पैकेट को सुनने के लिए उपयोग कर रहे कोड को पोस्ट कर सकते हैं? – tomasmcguinness
मैंने कोड से कोशिश की: http://codeidol.com/csharp/csharp-network/IP-Multicasting/What-Is-Broadcasting/ और http://www.java2s.com/Code/CSharp/Network/ReceiveBroadcast। एचटीएम और http://stackoverflow.com/questions/746519/udpclient-receive-on-broadcast-address – Boris
कोई सक्रिय फ़ायरवॉल? मुझे यकीन नहीं है कि Wireshark संकुल को कैसे रोकता है लेकिन यह हो सकता है कि फ़ायरवॉल उन्हें बाद में – Default