import java.net.*; import java.io.*; public class CountServer extends Thread { private static int countVal = 0; private static int portNumber = 4123; private static String filename = "count.txt"; private ServerSocket serverSock = null; public CountServer() { try { serverSock = new ServerSocket(portNumber); start(); } catch(IOException e) { System.out.println("Server did not start."); System.exit(1); } } private String urlBase = "~bergin"; private String urlBase2 = "%7Ebergin"; private String fileBase = "/sd2/users/bergin/public_html"; private File URLtoFile(URL in) { String result = in.getFile(); String proto = in.getProtocol(); if (proto.equalsIgnoreCase("http")) { int where = result.indexOf(urlBase); if (where >= 0) { result = fileBase + result.substring(where + urlBase.length()); } else { where = result.indexOf(urlBase2); if (where >= 0) { result = fileBase + result.substring(where + urlBase2.length()); } } } return new File(result); } public void run() { while (true) { try { Socket incoming = serverSock.accept(); ObjectInputStream where = new ObjectInputStream(incoming.getInputStream()); URL countFileURL = (URL)where.readObject(); File countFile = null; if (countFileURL == null) { countFile = new File(filename); } else { countFile = URLtoFile(countFileURL); } // System.out.println(countFile); if (!countFile.exists()) { FileWriter temp = new FileWriter(countFile); temp.write('0'); temp.close(); } BufferedReader in = new BufferedReader(new FileReader(countFile)); String inline = in.readLine(); // System.out.println(inline); countVal = Integer.parseInt(inline); in.close(); PrintWriter client = new PrintWriter(incoming.getOutputStream()); client.println(inline); client.flush(); BufferedWriter out = new BufferedWriter(new FileWriter(countFile)); out.write(""+(countVal+1)); out.newLine(); out.close(); } catch(Exception e) { System.out.println("Count server failed. " + e); } } } private static CountServer server; public static void main(String [] args) //throws Exception { if(args.length > 0) portNumber = Integer.parseInt(args[0]); if(args.length > 1) filename = args[1]; server = new CountServer(); // System.out.println(server.URLtoFile(new URL("http://csis.pace.edu/~bergin/foo/bar.html"))); } }