मेरे पास उबंटू आभासी मशीन यूडीपी प्रसारण पैकेट के लिए सुन रही है जो मेजबान मशीन द्वारा उत्पन्न होती है। अगर मैं अपने नेटवर्क में से किसी एक से जुड़ता हूं तो पाइथन की सॉकेट का उपयोग करके eth1 या lo (स्थानीय लूपबैक) इंटरफेस करता है। बाइंड विधि मुझे कोई पैकेट नहीं मिलता है। यदि, हालांकि, मैं '' (सभी इंटरफेस के लिए प्रतीक) का उपयोग कर बांधता हूं तो सब कुछ ठीक है। मैं उम्मीद करता हूं कि केवल eth1 के पते से जुड़ना संभव था, लेकिन ऐसा लगता है कि यह मामला नहीं है। क्या कोई समझा सकता है कि '' की आवश्यकता क्यों है? क्या कुछ मज़ेदार चल रहा है क्योंकि मैं वर्चुअल मशीन का उपयोग कर रहा हूं? मैं एक ब्रिज-नेटवर्क सेटअप का उपयोग कर रहा हूं ताकि वर्चुअल मशीन मेरे लैन पर एक और मशीन की तरह दिखती हो। कोड यह रहा:यूडीपी प्रसारण प्राप्त करना [वर्चुअलबॉक्स, उबंटू, पायथन]
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
# using the '' address works
sock.bind(('', UDP_PORT))
# using the address of eth1 doesn't
#sock.bind(('192.168.2.123', UDP_PORT))
# and neither does using the local loopback
#sock.bind(('127.0.0.1', UDP_PORT))
while True:
data, addr = sock.recv(2048)
print data
'127.0.0.1' के बारे में क्या? – dav1d
127.0.0.1 या तो काम नहीं करता है। किसी कारण से इसे "पता होना चाहिए जो मुझे समझ में नहीं आता है। मैं थोड़ा सा स्पष्ट होने के लिए अपना कोड बदल दूंगा। – user975326