import java.net.*; import java.io.*; import java.util.*; public class ServerThread extends Thread { NameTable table; Socket theClient; public ServerThread(NameTable table, Socket s) { this.table = table; theClient = s; } public void run() { try { Scanner sc = new Scanner(theClient.getInputStream()); PrintWriter pout = new PrintWriter(theClient.getOutputStream()); String command = sc.nextLine(); System.out.println("received:" + command); Scanner st = new Scanner(command); String tag = st.next(); if (tag.equals("search")) { InetSocketAddress addr = table.search(st.next()); if (addr == null) pout.println(0 + " " + "nullhost"); else pout.println(addr.getPort() + " " + addr.getHostName()); } else if (tag.equals("insert")) { String name = st.next(); String hostName = st.next(); int port = st.nextInt(); int retValue = table.insert(name, hostName, port); pout.println(retValue); } else if (tag.equals("blockingFind")) { InetSocketAddress addr = table.blockingFind(st.next()); pout.println(addr.getPort() + " " + addr.getHostName()); } else if (tag.equals("clear")) { table.clear(); } pout.flush(); theClient.close(); } catch (IOException e) { System.err.println(e); } } }