// source: http://java.sun.com/developer/technicalArticles/ALT/sockets/
importjava.io.*;importjava.net.*;importjava.util.*;publicclassDateServerextendsThread{privateServerSocketdateServer;publicstaticvoidmain(Stringargv[])throwsException{newDateServer();}publicDateServer()throwsException{dateServer=newServerSocket(3000);System.out.println("Server listening on port 3000.");this.start();}publicvoidrun(){while(true){try{System.out.println("Waiting for connections.");Socketclient=dateServer.accept();System.out.println("Accepted a connection from: "+client.getInetAddress());Connectc=newConnect(client);}catch(Exceptione){}}}}classConnectextendsThread{privateSocketclient=null;privateObjectInputStreamois=null;privateObjectOutputStreamoos=null;publicConnect(){}publicConnect(SocketclientSocket){client=clientSocket;try{ois=newObjectInputStream(client.getInputStream());oos=newObjectOutputStream(client.getOutputStream());}catch(Exceptione1){try{client.close();}catch(Exceptione){System.out.println(e.getMessage());}return;}this.start();}publicvoidrun(){DateclientDate=null;try{clientDate=(Date)(ois.readObject());System.out.println("Client sent this date:\t\n"+clientDate.toString());try{Thread.sleep(2000);}catch(Exceptionex){}oos.writeObject(newDate());oos.flush();// close streams and connections
ois.close();oos.close();client.close();}catch(Exceptione){}}}