/* A class to test my client TCP socket implementation */ import java.net.*; import java.io.*; public class ClientSocket extends Object { public static void main(String[] argv) throws IOException { System.out.println("Starting client stream socket test"); /* Simple connection and read test */ System.out.println("Test 1: Connection to daytime port on local host"); try { InetAddress addr = InetAddress.getByName("127.0.0.1"); Socket s = new Socket(addr, 13); InputStream is = s.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); for (String str = br.readLine(); ; str = br.readLine()) { if (str == null) break; System.out.println(str); } s.close(); System.out.println("PASSED: daytime test"); } catch(IOException e) { System.out.println("FAILED: daytime test: " + e); } /* Simple connection refused test */ System.out.println("Test 2: Connection refused test"); try { InetAddress addr = InetAddress.getByName("127.0.0.1"); Socket s = new Socket(addr, 47); s.close(); System.out.print("WARNING: Cannot perform connection refused test"); System.out.println(" because someone is listening on localhost:47"); } catch(IOException e) { System.out.println("PASSED: connection refused test: " + e.getMessage()); } /* Socket attributes test */ System.out.println("Test 3: Connection attributes"); try { Socket s = new Socket("www.netscape.com", 80); String laddr = s.getLocalAddress().getHostName(); int lport = s.getLocalPort(); String raddr = s.getInetAddress().getHostName(); int rport = s.getPort(); System.out.println("Local Address is: " + laddr); System.out.println("Local Port is: " + lport); System.out.println("Remote Address is: " + raddr); System.out.println("Remote Port is: " + rport); System.out.println("Socket.toString is: " + s); if ( (laddr == null) || ((lport < 0) || (lport > 65535)) || (raddr.indexOf("netscape.com") == -1) || (rport != 80)) System.out.println("FAILED: connection attribute test"); else System.out.println("PASSED: connection attribute test"); s.close(); } catch(IOException e) { System.out.println("FAILED: connection attributes test: " + e.getMessage()); } /* Socket options test */ System.out.println("Test 4: Socket options"); Socket s = new Socket("127.0.0.1", 23); try { // SO_TIMEOUT System.out.println("SO_TIMEOUT = " + s.getSoTimeout()); System.out.println("Setting SO_TIMEOUT to 142"); s.setSoTimeout(142); 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()); } catch (IOException e) { System.out.println("WARNING: SO_TIMEOUT problem: " + e.getMessage()); System.out.println("This is ok on Linux"); } try { // Try TCP_NODELAY System.out.println("TCP_NODELAY = " + s.getTcpNoDelay()); System.out.println("Setting TCP_NODELAY to true"); s.setTcpNoDelay(true); System.out.println("TCP_NODELAY = " + s.getTcpNoDelay()); System.out.println("Setting TCP_NODELAY to false"); s.setTcpNoDelay(false); System.out.println("TCP_NODELAY = " + s.getTcpNoDelay()); // Try SO_LINGER System.out.println("SO_LINGER = " + s.getSoLinger()); System.out.println("Setting SO_LINGER to 100"); s.setSoLinger(true, 100); System.out.println("SO_LINGER = " + s.getSoLinger()); System.out.println("Setting SO_LINGER to off"); s.setSoLinger(false, 0); System.out.println("SO_LINGER = " + s.getSoLinger()); System.out.println("PASSED: socket options test"); } catch(IOException e) { System.out.println("FAILED: socket options test: " + e.getMessage()); } s.close(); /* Simple read/write test */ System.out.println("Test 5: Simple read/write test"); try { System.out.println("Downloading the Transmeta homepage"); s = new Socket("www.transmeta.com", 80); BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); PrintWriter out = new PrintWriter(new OutputStreamWriter(s.getOutputStream())); out.print("GET /\r\n"); out.flush(); for (String str = in.readLine(); ; str = in.readLine()) { if (str == null) break; System.out.println(str); } s.close(); System.out.println("PASSED: simple read/write test"); } catch(IOException e) { System.out.println("FAILED: simple read/write test: " + e.getMessage()); } /* Connect to our server socket */ System.out.println("Test 6: Connect to ServerSocket"); try { s = new Socket("localhost", 9999); PrintWriter out = new PrintWriter(new OutputStreamWriter(s.getOutputStream())); out.println("Hello, there server socket"); out.print("I'm dun"); out.flush(); s.close(); System.out.println("PASSED: connect to server socket"); } catch(Exception e) { System.out.println("FAILED: connect to server socket: " + e); } System.out.println("Client stream socket test complete"); } }