// Copyright 1997, MageLang Institute. import java.net.ServerSocket; import java.net.Socket; import java.io.*; public class Server { public static final int DEFAULT_PORT = 8002; protected ServerSocket server; public static void main(String[] args) { // first determine the port to use int port = DEFAULT_PORT; if (args.length > 1) { System.err.println("Usage: java Server [port]"); System.exit(0); } else if (args.length == 1) { try { port = Integer.parseInt(args[0]); } catch (NumberFormatException e) { System.err.println("Invalid port number" + port); System.exit(0); } } // create a new server on that port, and wait for a connection Server s = new Server(port); s.accept(); } public Server(int port) { // create a server listening at port, max 15 pending connections try { server = new ServerSocket(port, 15); } catch (IOException e) { System.err.println("cannot listen at "+port+" ("+e.getMessage()+")"); } } public void accept() { ObjectOutput out = null; ObjectInput in = null; Socket socket = null; while (true) { try { socket = server.accept(); System.out.println("socket opened"); out = new ObjectOutputStream(socket.getOutputStream()); in = new ObjectInputStream(socket.getInputStream()); // read in a tree, add a node, and send it back TreeNode n = (TreeNode)in.readObject(); n.addChild(new TreeNode("server node")); out.writeObject(n); out.flush(); } catch (IOException e) { System.err.println("Error creating socket connection"); System.exit(1); } catch (Exception e) { System.err.println(e); } } } }