189 lines
5.5 KiB
Java
189 lines
5.5 KiB
Java
/* 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");
|
|
}
|
|
|
|
}
|
|
|