निम्नलिखित क्लाइंट और सर्वर यूडीपी प्रसारण कोड ठीक उसी पर काम करता है जब दोनों एक ही पीसी पर होते हैं। हालांकि जब मैं उन्हें एक ही वाईफ़ाई लैन में अलग पीसी पर रखता हूं तो कुछ भी नहीं होता है। मैंने दो अलग-अलग पीसी पर एक मल्टीकास्ट संस्करण ठीक काम करने में कामयाब रहा है, लेकिन यह नहीं :(मैंने दोनों पर फ़ायरवॉल बंद कर दिए हैं और दोनों पीसी से सफलतापूर्वक पिंग किया है।विभिन्न यूडीपी प्रसारण क्लाइंट और सर्वर विभिन्न मशीनों पर
इस परीक्षण के पीछे विचार है इसलिए मैं उपयोग कर सकता हूं इस विधि से क्लाइंट एक डेटाग्राम पैकेट (सहकर्मी खोज) भेजकर लैन पर एक सर्वर पा सकता है। मुझे लगता है कि मैं मेजबान नाम या कुछ के साथ कुछ गलत कर रहा हूं लेकिन गुगलिंग के एक सप्ताह बाद और नए विचारों का परीक्षण करने के बाद मैं आधिकारिक तौर पर हूं सभी उनमें से बाहर :(।
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();
}
}
}
}
बस अगर कोई मदद कर सकता है सोच रहा?
होस्टनाम लोकलहोस्ट है, जिसे मैंने अनुमान लगाया था समस्या हो सकती थी। मुझे लगता है कि सर्वर का आईपी पता ढूंढना और उस आईपी पते पर लोकहोस्ट को बदलना एक आसान समाधान है। हालांकि यूपीपी प्रसारण के उद्देश्य से इस तरह की हार नहीं कर रही है? मैं इस विचार पर काम कर रहा था कि एक सर्वर नेटवर्क पर किसी भी प्रसारण के लिए सुनता है। एक ग्राहक एक नेटवर्क पर प्रसारण भेजता है और सर्वर इसे प्राप्त करता है और जवाब देता है। मैं इसका उपयोग कर रहा हूं ताकि क्लाइंट सर्वर को खोज सके लेकिन मैन्युअल रूप से क्लाइंट को सर्वर का आईपी पता देकर पूरी खोज चीज अनावश्यक हो। – Paul
मुझे लगता है, सबसे पहले आपको अपने नेटवर्क पर प्रसारित करना होगा। इसके बारे में एक दस्तावेज है। [लिंक] (http://docs.oracle.com/javase/tutorial/networking/datagrams/broadcasting.html) – chrome
हाँ, यह समस्या है जो मैं कर रहा हूं। मैं बिना किसी समस्या के मल्टीकास्ट कर सकता हूं। यूडीपी प्रसारण क्लाइंट/सर्वर उदाहरणों के बहुत सारे हैं लेकिन हर कोई स्थानीयहोस्ट को दिखाता है जब ग्राहक और सर्वर एक ही मशीन पर होते हैं। क्लाइंट और सर्वर एक ही मशीन पर नहीं होने पर कोई उदाहरण नहीं :(जब तक कि ग्राहक अपने पैकेट को 1 9 2.168.0.0 पर भेजता है। ट्रिकी ... – Paul