Server.java 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package connection.socket;
  2. import java.net.*;
  3. import java.io.*;
  4. public class Server implements Runnable{
  5. private ServerSocket serverSocket;
  6. private Socket clientSocket;
  7. private PrintWriter out;
  8. private BufferedReader in;
  9. private boolean stopped = false;
  10. private ui.view.Console console;
  11. public Server(int port, ui.view.Console console) throws IOException {
  12. //Bind Port
  13. serverSocket = new ServerSocket(port);
  14. //Wait for Connection
  15. Thread serverThread = new Thread(this);
  16. serverThread.start();
  17. this.console = console;
  18. }
  19. public void stopServer() throws IOException {
  20. stopped = false;
  21. stopConnection();
  22. serverSocket.close();
  23. }
  24. private void stopConnection() throws IOException {
  25. in.close();
  26. out.close();
  27. clientSocket.close();
  28. }
  29. @Override
  30. public void run() {
  31. while(!stopped) {
  32. try {
  33. //Wait for new Connection
  34. clientSocket = serverSocket.accept();
  35. console.println("A Connection from " + clientSocket.getInetAddress() + ":" + clientSocket.getPort());
  36. out = new PrintWriter(clientSocket.getOutputStream(), true);
  37. in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
  38. String inputLine;
  39. while ((inputLine = in.readLine()) != null) {
  40. console.println("Res: " + inputLine);
  41. if (".".equals(inputLine)) {
  42. out.println("bye");
  43. break;
  44. }
  45. out.println(inputLine);
  46. console.println("Send: " + inputLine);
  47. }
  48. stopConnection();
  49. }catch (IOException e) {
  50. e.printStackTrace();
  51. }
  52. }
  53. }
  54. }