package connection.socket; import java.net.*; import java.io.*; public class Server implements Runnable{ private ServerSocket serverSocket; private Socket clientSocket; private PrintWriter out; private BufferedReader in; private boolean stopped = false; private ui.view.Console console; public Server(int port, ui.view.Console console) throws IOException { //Bind Port serverSocket = new ServerSocket(port); //Wait for Connection Thread serverThread = new Thread(this); serverThread.start(); this.console = console; } public void stopServer() throws IOException { stopped = false; stopConnection(); serverSocket.close(); } private void stopConnection() throws IOException { in.close(); out.close(); clientSocket.close(); } @Override public void run() { while(!stopped) { try { //Wait for new Connection clientSocket = serverSocket.accept(); console.println("A Connection from " + clientSocket.getInetAddress() + ":" + clientSocket.getPort()); out = new PrintWriter(clientSocket.getOutputStream(), true); in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) { console.println("Res: " + inputLine); if (".".equals(inputLine)) { out.println("bye"); break; } out.println(inputLine); console.println("Send: " + inputLine); } stopConnection(); }catch (IOException e) { e.printStackTrace(); } } } }