2013-10-27 6 views
5

मैं वर्तमान में किसी नेटवर्क निम्नलिखित सेटअप के साथ 2 नेटवर्क इंटरफेस के साथ अपने मशीन पर आवेदन के विकास कर रहा हूँ के साथ नेटवर्किंग -यूडीपी एकाधिक नेटवर्क

Current network setting

मैं आईपी के साथ पहली बार विन्यास का उपयोग करके यूडीपी संदेश भेजना चाहते हैं 192.168.1.2

कोई कनेक्शन नहीं है क्योंकि लक्ष्य मशीन सक्रिय रूप से यह इनकार कर दिया

अजीब यह जब मैं अपने को अक्षम है कि बनाया जा सकता है -

using (var udpClient = new UdpClient(5556)) 
{ 
    udpClient.Connect(IPAddress.Parse("192.168.1.2"), 5556); 
    // DO STUFF 
} 

जब मैं यह कोशिश मैं निम्नलिखित त्रुटि मिलती है अन्य नेटवर्क जो यह पूरी तरह से काम करता है लेकिन 2 कनेक्शन (लैन & वाईफाई) के साथ यह अब काम नहीं करता है ... मुझे लगता है कि यह गलत एडाप्टर पर भेज रहा है? ऐसा इसलिए है क्योंकि मेरा डिफ़ॉल्ट गेटवे वही है या मैं गलत क्या कर रहा हूं? मैं नेटवर्क-आधारित अनुप्रयोगों के विकास के लिए नए हूँ ...

+0

संयोग से आपको यूडीपी के साथ कनेक्ट करने की आवश्यकता नहीं है - हर बार जब आप कॉल करते हैं तो आपको वह अंत बिंदु पारित करने की आवश्यकता नहीं होती है जिसे आप भेजना चाहते हैं। – markmnl

+0

इसके अलावा आप लूपबैक पता का उपयोग कर सकते हैं: 127.0.0.1, और इंटरफेस जुड़े हुए हैं। – markmnl

उत्तर

1

आप इस तरह नेटवर्किंग कार्ड आईपी के साथ एक IPEndPoint निर्दिष्ट करने के लिए है:

var endpoint = new IPEndPoint(IPAddress.Parse("192.168.1.2"), portNum); 
UdpClient client = new UdpClient(endpoint); 
1

आप UdpClient जो उपयोग करने के लिए आईपी कह नहीं कर रहे हैं।

UdpClient में constructor है जो IPEndPoint ले सकता है।

const string ip = "192.168.1.2"; 
const int port = 5556; 

var listenEndpoint = new IPEndPoint(IPAddress.Parse(ip), port); 
var udpClient = new UdpClient(listenEndpoint); 
+0

मैंने कोशिश की लेकिन यह भी काम नहीं कर रहा है, कोई विचार? –

1

मैं सी # में अच्छा नहीं हूं लेकिन मुझे लगता है कि मैं समस्या को समझता हूं। आप अपने udpClient को पोर्ट 5556 पर बाध्य कर रहे हैं लेकिन आप आईपी पता निर्दिष्ट नहीं कर रहे हैं। ओएस आपके लिए आईपी पता का चयन करेगा। मुझे लगता है कि यह या तो 192.168.1.2 या 1 9 2.168.1.5 हो सकता है, आप कौन नहीं बता सकते हैं। फिर उसी udpClient के साथ आप 1 9 2.168.1.2, पोर्ट 5556 पर सुन रहे रिमोट होस्ट से कनेक्ट करने का प्रयास कर रहे हैं। और शायद कोई भी वहां नहीं सुन रहा है। यही कारण है कि आप त्रुटि प्राप्त करते हैं।

मैं (मेरा बुरा सी # कौशल के लिए खेद है) के बाद करना होगा: एक धागा या कार्यक्रम/प्रक्रिया में

  • दो udpClient की है,:

    var udpClient1 = new UdpClient("192.168.1.2", 5556); 
    

यह एक होगा आईपी ​​एड्रेस 1 9 2.168.1.2, पोर्ट 5556 पर सुनें।

  • दूसरे धागे या कार्यक्रम/प्रक्रिया में:

    var udpClient2 = new UdpClient(); //doesn't matter which (IP, port) the OS will bind it to. 
    udpClient2.Connect(IPAddress.Parse("192.168.1.2"), 5556); //connect to peer/server listening in (IP=192.168.1.2, port=5556) 
    

आप एक ही धागा भी दोनों udpClient1 और udpClient2 संभाल सकता था। महत्वपूर्ण यह है कि यदि आप कनेक्ट करते हैं और (आईपी, पोर्ट) वहां कुछ एप्लिकेशन/प्रक्रिया सुननी होती है। अन्यथा, रिमोट होस्ट एक आईसीएमपी संदेश भेजेगा जो दर्शाता है कि डेटाग्राम वितरित नहीं किया जा सकता है। कनेक्शन अस्वीकार कर दिया गया है।

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