// 'NetServer' + 'ServerSession.java' code file import java.awt.*; import java.net.*; import java.io.*; import java.util.*; class NetServer extends Thread { static ServerSocket server; static Vector sessionList; public NetServer(int port){ sessionList = new Vector(); try {server = new ServerSocket(port);} catch(IOException e){} } public void run(){ ServerSession session; Socket socket; while (true) { socket = null; try { socket = server.accept(); // blocks session = new ServerSession(socket); append(session); session.start(); } catch(IOException e){} } } static int count(){return sessionList.size();} static void append(ServerSession ssn){sessionList.addElement(ssn);} static void remove(ServerSession ssn){sessionList.removeElement(ssn);} } class ServerSession extends Thread { private Socket socket; private DataInputStream input; private DataOutputStream output; ServerSession(Socket skt){ socket = skt; try { input = new DataInputStream(socket.getInputStream()); output = new DataOutputStream(socket.getOutputStream()); } catch (IOException e){} } void kill(){ NetServer.remove(this); // drop from list stop(); try {socket.close();} catch (IOException e){} } public void run(){ // read messages byte buf[]; int size; if (input==null) return; while (true) { try { size = input.readInt(); buf = new byte[size]; input.read(buf,0,size); respond(buf); } catch (IOException e){kill();} } } private void send(byte buf[]){ int size; try { size = buf.length; output.writeInt(size); output.write(buf,0,size); } catch (IOException e){kill();} } void respond(byte[] buf){ // this is where you respond to the message } }