import java.net.*; import java.io.*; public class PeerServerThread extends Thread { Peer parent; private Socket socket = null; String name; StringBuffer outString; StringBuffer inString; PrintWriter out; BufferedReader in; String inputLine, outputLine; //BufferedReader stdIn; boolean keepGoing; int inChar, outChar; public PeerServerThread(Socket socket, String n, Peer p) { super(n); this.socket = socket; name = n; parent = p; try { out = new PrintWriter(socket.getOutputStream(), true); in = new BufferedReader( new InputStreamReader(socket.getInputStream())); //stdIn = new BufferedReader(new InputStreamReader(System.in)); } catch(IOException e) { System.out.println("Exception"); } System.out.println("Name is " + name); out.println("You're id is " + name); outString = new StringBuffer(); inString = new StringBuffer(); } public void run() { try { keepGoing = true; while(keepGoing) { // check for input from peer while(in.ready()) { inChar = in.read(); if(inChar == '\n') { printString(inString.toString()); inString.delete(0, inString.length()); } else { inString.append((char)inChar); } //System.out.write(inChar); } // check for input from user /* while(stdIn.ready()) { outChar = stdIn.read(); out.write(outChar); //System.out.write(outChar); out.flush(); } */ yield(); } out.close(); in.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } public synchronized void printString(String s) { System.out.println(s); parent.bcastString(s, getName()); } public synchronized void sendString(String s) { out.println(s); } }