summaryrefslogtreecommitdiff
path: root/test/java.net/ClientDatagram.java
diff options
context:
space:
mode:
Diffstat (limited to 'test/java.net/ClientDatagram.java')
-rw-r--r--test/java.net/ClientDatagram.java112
1 files changed, 112 insertions, 0 deletions
diff --git a/test/java.net/ClientDatagram.java b/test/java.net/ClientDatagram.java
new file mode 100644
index 000000000..6ec98258e
--- /dev/null
+++ b/test/java.net/ClientDatagram.java
@@ -0,0 +1,112 @@
+/* Class to test Datagrams from a client perspective */
+
+import java.io.*;
+import java.net.*;
+
+public class ClientDatagram
+{
+
+public static void
+main(String[] argv) throws IOException
+{
+ System.out.println("Starting datagram tests");
+
+ byte[] buf = new byte[2048];
+ DatagramPacket p = new DatagramPacket(buf, buf.length);
+ InetAddress addr = InetAddress.getByName("localhost");
+
+ /* Execute the daytime UDP service on localhost. You may need to
+ enable this in inetd to make the test work */
+ System.out.println("Test 1: Simple daytime test");
+ try
+ {
+
+ DatagramSocket s = new DatagramSocket();
+
+ System.out.println("Socket bound to " + s.getLocalAddress() +
+ ":" + s.getLocalPort());
+
+ byte[] sbuf = { 'H', 'I' };
+ DatagramPacket spack = new DatagramPacket(sbuf, sbuf.length, addr, 13);
+
+ s.send(spack);
+ s.receive(p);
+
+ System.out.println("Received " + p.getLength() + " bytes from " +
+ p.getAddress() + ":" + p.getPort());
+
+ byte[] tmp = new byte[p.getLength()];
+ for (int i = 0; i < p.getLength(); i++)
+ tmp[i] = buf[i];
+
+ System.out.print("Data: " + new String(tmp));
+
+ s.close();
+ System.out.println("PASSED simple datagram test");
+ }
+ catch(Exception e)
+ {
+ System.out.println("FAILED simple datagram test: " + e);
+ }
+
+ System.out.println("Test 2: Specific host/port binding");
+ try
+ {
+ DatagramSocket s = new DatagramSocket(8765, addr);
+ if (s.getLocalPort() != 8765)
+ throw new IOException("Bound to wrong port: " + s.getLocalPort());
+
+ if (!s.getLocalAddress().equals(addr))
+ throw new IOException("Bound to wrong host:" + s.getLocalAddress());
+
+ s.close();
+ System.out.println("PASSED specific host/port binding test");
+ }
+ catch (Exception e)
+ {
+ System.out.println("FAILED specific host/port binding: " + e);
+ }
+
+ System.out.println("Test 3: Socket Options test");
+ try
+ {
+ DatagramSocket s = new DatagramSocket();
+ System.out.println("SO_TIMEOUT = " + s.getSoTimeout());
+ System.out.println("Setting SO_TIMEOUT to 170");
+ s.setSoTimeout(170);
+ System.out.println("SO_TIMEOUT = " + s.getSoTimeout());
+ System.out.println("Setting SO_TIMEOUT to 0");
+ s.setSoTimeout(0);
+ System.out.println("SO_TIMEOUT = " + s.getSoTimeout());
+ s.close();
+ }
+ catch(Exception e)
+ {
+ System.out.println("WARNING: Problem with SO_TIMEOUT test: " + e.getMessage());
+ System.out.println("This is ok on Linux");
+ }
+
+ System.out.println("Test 4: Max values test");
+ try
+ {
+// ServerDatagram sd = new ServerDatagram(37900);
+// sd.run();
+
+ DatagramSocket s = new DatagramSocket();
+ byte[] sbuf = new byte[65332];
+ DatagramPacket spack = new DatagramPacket(sbuf, sbuf.length,
+ addr, 37900);
+
+ s.send(spack);
+ s.close();
+ }
+ catch (Exception e)
+ {
+ System.out.println("FAILED max values test: " + e);
+ }
+
+ System.out.println("Datagram testing complete");
+}
+
+}
+