आप इसे आजमा सकते हैं। अपने परिदृश्य में आवश्यक सॉकेट के टाइमआउट को बदलें! यह कोड एक संदेश भेजेगा और फिर टाइमआउट तक पहुंचने तक संदेशों को प्राप्त करने के लिए प्रतीक्षा करें!
DatagramSocket s;
try {
s = new DatagramSocket();
byte[] buf = new byte[1000];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
InetAddress hostAddress = InetAddress.getByName("localhost");
String outString = "Say hi"; // message to send
buf = outString.getBytes();
DatagramPacket out = new DatagramPacket(buf, buf.length, hostAddress, 9999);
s.send(out); // send to the server
s.setSoTimeout(1000); // set the timeout in millisecounds.
while(true){ // recieve data until timeout
try {
s.receive(dp);
String rcvd = "rcvd from " + dp.getAddress() + ", " + dp.getPort() + ": "+ new String(dp.getData(), 0, dp.getLength());
System.out.println(rcvd);
}
catch (SocketTimeoutException e) {
// timeout exception.
System.out.println("Timeout reached!!! " + e);
s.close();
}
}
} catch (SocketException e1) {
// TODO Auto-generated catch block
//e1.printStackTrace();
System.out.println("Socket closed " + e1);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
क्या आपको सॉकेट पर एक मिनट या डेटा उपलब्ध होने की प्रतीक्षा करनी है? यदि आप पूरे मिनट का इंतजार करना चाहते हैं, तो मैं नींद या नींद का काम करूंगा। ये जारी रखने से पहले समाप्त होने की अवधि के लिए होगा। यदि आप डेटा की प्रतीक्षा कर रहे हैं, तो मैं चुनिंदा फ़ंक्शन देखता हूं, जो आपको डेटा आने या समय की अवधि समाप्त होने की प्रतीक्षा करने की अनुमति देगा, जो भी पहले आता है। – Glenn
@Glenn नींद एक मिनट तक बर्बाद हो सकती है। यदि डेटा एक सेकंड के बाद आता है तो क्या होगा? आपको लगता है कि पढ़ने के लिए समय * * के लिए * क्या है? – EJP