2012-10-21 15 views
9

निम्नलिखित क्लाइंट और सर्वर यूडीपी प्रसारण कोड ठीक उसी पर काम करता है जब दोनों एक ही पीसी पर होते हैं। हालांकि जब मैं उन्हें एक ही वाईफ़ाई लैन में अलग पीसी पर रखता हूं तो कुछ भी नहीं होता है। मैंने दो अलग-अलग पीसी पर एक मल्टीकास्ट संस्करण ठीक काम करने में कामयाब रहा है, लेकिन यह नहीं :(मैंने दोनों पर फ़ायरवॉल बंद कर दिए हैं और दोनों पीसी से सफलतापूर्वक पिंग किया है।विभिन्न यूडीपी प्रसारण क्लाइंट और सर्वर विभिन्न मशीनों पर

इस परीक्षण के पीछे विचार है इसलिए मैं उपयोग कर सकता हूं इस विधि से क्लाइंट एक डेटाग्राम पैकेट (सहकर्मी खोज) भेजकर लैन पर एक सर्वर पा सकता है। मुझे लगता है कि मैं मेजबान नाम या कुछ के साथ कुछ गलत कर रहा हूं लेकिन गुगलिंग के एक सप्ताह बाद और नए विचारों का परीक्षण करने के बाद मैं आधिकारिक तौर पर हूं सभी उनमें से बाहर :(।

public class Client 
{ 
    private String hostname= "localhost"; 
    private int port=1234; 
    private InetAddress host; 
    private DatagramSocket socket; 
    DatagramPacket packet; 

    public void run() 
    { 
     try 
     { 
      host = InetAddress.getByName(hostname); 
      socket = new DatagramSocket (null); 
      packet=new DatagramPacket (new byte[100], 0,host, port); 
      socket.send (packet); 
      packet.setLength(100); 
      socket.receive (packet); 
      socket.close(); 
      byte[] data = packet.getData(); 
      String time=new String(data); // convert byte array data into string 
      System.out.println(time); 
     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 



public class Server 
{ 
    public static final int DEFAULT_PORT = 1234; 
    private DatagramSocket socket; 
    private DatagramPacket packet; 

    public void run() 
    { 
     try 
     { 
      socket = new DatagramSocket(DEFAULT_PORT); 
     } 
     catch(Exception ex) 
     { 
      System.out.println("Problem creating socket on port: " + DEFAULT_PORT); 
     } 

     packet = new DatagramPacket (new byte[1], 1); 

     while (true) 
     { 
      try 
      { 
       socket.receive (packet); 
       System.out.println("Received from: " + packet.getAddress() + ":" + 
            packet.getPort()); 
       byte[] outBuffer = new java.util.Date().toString().getBytes(); 
       packet.setData (outBuffer); 
       packet.setLength (outBuffer.length); 
       socket.send (packet); 
      } 
      catch (IOException ie) 
      { 
       ie.printStackTrace(); 
      } 
     } 
    } 
} 

बस अगर कोई मदद कर सकता है सोच रहा?

उत्तर

3

होस्ट नाम स्थानीय होस्ट है? यदि हां, तो आप ca एन अन्य पीसी तक नहीं पहुंचें। आपको इसे लक्षित आईपी पते से बदलना होगा।

+1

होस्टनाम लोकलहोस्ट है, जिसे मैंने अनुमान लगाया था समस्या हो सकती थी। मुझे लगता है कि सर्वर का आईपी पता ढूंढना और उस आईपी पते पर लोकहोस्ट को बदलना एक आसान समाधान है। हालांकि यूपीपी प्रसारण के उद्देश्य से इस तरह की हार नहीं कर रही है? मैं इस विचार पर काम कर रहा था कि एक सर्वर नेटवर्क पर किसी भी प्रसारण के लिए सुनता है। एक ग्राहक एक नेटवर्क पर प्रसारण भेजता है और सर्वर इसे प्राप्त करता है और जवाब देता है। मैं इसका उपयोग कर रहा हूं ताकि क्लाइंट सर्वर को खोज सके लेकिन मैन्युअल रूप से क्लाइंट को सर्वर का आईपी पता देकर पूरी खोज चीज अनावश्यक हो। – Paul

+0

मुझे लगता है, सबसे पहले आपको अपने नेटवर्क पर प्रसारित करना होगा। इसके बारे में एक दस्तावेज है। [लिंक] (http://docs.oracle.com/javase/tutorial/networking/datagrams/broadcasting.html) – chrome

+1

हाँ, यह समस्या है जो मैं कर रहा हूं। मैं बिना किसी समस्या के मल्टीकास्ट कर सकता हूं। यूडीपी प्रसारण क्लाइंट/सर्वर उदाहरणों के बहुत सारे हैं लेकिन हर कोई स्थानीयहोस्ट को दिखाता है जब ग्राहक और सर्वर एक ही मशीन पर होते हैं। क्लाइंट और सर्वर एक ही मशीन पर नहीं होने पर कोई उदाहरण नहीं :(जब तक कि ग्राहक अपने पैकेट को 1 9 2.168.0.0 पर भेजता है। ट्रिकी ... – Paul

10

वास्तव में प्रसारण करने के लिए आपको लैन पर सभी आईपी में पैकेट भेजना होगा। संभावित आईपी की सीमा 0.0.0.0 से 254.254.254.254 तक है, लेकिन उन सभी को चुनने के लिए आप लिख सकते हैं: 255.255.255.255। लेकिन अधिकांश राउटर इसे अवरुद्ध करेंगे। वे 1 9 2.168.1.255 से 1 9 2.168.1.254 से 1 9 2.168.1.254 तक सभी 255 आईपी तक 1 9 2.168.1.255 चुड़ैल प्रसारण की अनुमति देंगे जो आपको चाहिए, मुझे लगता है।

+0

1 9 2.168.0.0 से 1 9 2.168.0.254 क्या है? क्या यह काम करता है –

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