4 * Start one thread for receiving a packet, wait for it to set up,
5 * send a packet to it, and wait until it completes. Compare the
6 * packet to make sure it came thru without errors.
9 public class DatagramSocketSendReceiveTest
12 public static final int port
= 4000 + (int)(java
.lang
.Math
.random() * 1000);
13 public static final String message
= "hello";
14 public static int count
= 0;
15 public static String received
;
20 DatagramSocket sender
= new DatagramSocket();
21 InetAddress local
= sender
.getLocalAddress();
22 byte []message_bytes
= message
.getBytes();
24 DatagramPacket packet
= new DatagramPacket(message_bytes
,
34 DatagramSocket socket
= new DatagramSocket(port
);
35 socket
.setSoTimeout(10);
37 byte[] buffer
= new byte[100];
38 DatagramPacket packet
= new DatagramPacket(buffer
, buffer
.length
);
44 socket
.receive(packet
);
47 received
= new String(buffer
, 0, packet
.getLength());
50 if ( message
.length() != received
.length() )
51 throw new Exception("Receved "+ received
.length()+
52 " bytes but sent "+message
.length() + " bytes");
54 if ( ! message
.equals(received
) )
55 throw new Exception("Receved \""+ received
+
56 "\" but sent \""+message
+ "\"");
62 String name
= Thread
.currentThread().getName();
63 if (name
.equals("timer")) {
66 } catch (InterruptedException e
){}
67 System
.out
.println("FAILED: timer triggered");
72 } catch (Exception e
) {
73 System
.out
.println("FAILED: receiver: " + e
);
77 public static void main(String args
[])
80 DatagramSocketSendReceiveTest sender
=
81 new DatagramSocketSendReceiveTest();
82 DatagramSocketSendReceiveTest receiver
=
83 new DatagramSocketSendReceiveTest();
84 Thread receiver_thread
= new Thread(receiver
);
86 /* Make sure the test terminates even if it hangs on network */
87 DatagramSocketSendReceiveTest timer
= new DatagramSocketSendReceiveTest();
88 Thread timer_thread
= new Thread(timer
, "timer");
91 synchronized(receiver
) {
92 receiver_thread
.start();
97 } catch (Exception e
) {
98 System
.out
.println("FAILED: sender: " + e
);
101 receiver_thread
.join();
104 throw new Exception("Nothing received");
106 System
.out
.println("PASSED: DatagramSocket send/receive count="+count
+
107 " message="+received
);
109 } catch (Exception e
) {
110 System
.out
.println("FAILED: " + e
);