//file: Server.java
import java.net.*;
import java.io.*;
public class Server {
public static void main( String argv[] ) throws IOException {
ServerSocket ss = new ServerSocket( Integer.parseInt(argv[0]) );
while ( true )
new ServerConnection( ss.accept() ).start( );
}
} // end of class Server
class ServerConnection extends Thread {
Socket client;
ServerConnection ( Socket client ) throws SocketException {
this.client = client;
setPriority( NORM_PRIORITY - 1 );
}
public void run( ) {
try {
ObjectInputStream in =
new ObjectInputStream( client.getInputStream( ) );
ObjectOutputStream out =
new ObjectOutputStream( client.getOutputStream( ) );
while ( true ) {
out.writeObject( processRequest( in.readObject( ) ) );
out.flush( );
}
} catch ( EOFException e3 ) { // Normal EOF
try {
client.close( );
} catch ( IOException e ) { }
} catch ( IOException e ) {
System.out.println( "I/O error " + e ); // I/O error
} catch ( ClassNotFoundException e2 ) {
System.out.println( e2 ); // unknown type of request object
}
}
private Object processRequest( Object request ) {
if ( request instanceof DateRequest )
return new java.util.Date( );
else if ( request instanceof WorkRequest )
return ((WorkRequest)request).execute( );
else
return null;
}
}
|