Advertisement
Panakotta00

SocketSystem.java

May 22nd, 2016
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.30 KB | None | 0 0
  1. package de.Panakotta00.AndromedaMC;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.io.PrintStream;
  7. import java.net.InetAddress;
  8. import java.net.ServerSocket;
  9. import java.net.Socket;
  10.  
  11. public class SocketSystem implements Runnable {
  12.     AndromedaMC main;
  13.    
  14.     Thread thread;
  15.     boolean loop;
  16.     ServerSocket socket;
  17.    
  18.     int port;
  19.    
  20.     Socket lobby;
  21.     LobbyListener lobbyListener;
  22.    
  23.     public SocketSystem(AndromedaMC main, int port) {
  24.         this.main = main;
  25.        
  26.         this.port = port;
  27.        
  28.         try {
  29.             socket = new ServerSocket(port);
  30.             thread = new Thread(this);
  31.             thread.start();
  32.            
  33.             System.out.println("ServerSocket auf Port " + port + " und IP " + socket.getInetAddress() + " gestartet!");
  34.         } catch (IOException e) {
  35.             e.printStackTrace();
  36.         }
  37.     }
  38.    
  39.     @Override
  40.     public void run() {
  41.         while (loop) {
  42.             try {
  43.                 Socket socket = this.socket.accept();
  44.                
  45.                 BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  46.                 String cmd = in.readLine();
  47.                
  48.                 if (cmd.equals("lobby")) {
  49.                     lobby = socket;
  50.                     lobbyListener = new LobbyListener(main, this);
  51.                 } else if (cmd.equals("arena")) {
  52.                     int id = Integer.valueOf(in.readLine());
  53.                     String adress = String.valueOf(in.readLine());
  54.                     int port = Integer.valueOf(in.readLine());
  55.                    
  56.                     main.ss.arenaFinished(id, adress, port);
  57.                 }
  58.                 System.out.println("Neue Socket connection!");
  59.             } catch (IOException e) {
  60.                 e.printStackTrace();
  61.             }
  62.         }
  63.        
  64.         try {
  65.             this.socket.close();
  66.         } catch (IOException e) {
  67.             e.printStackTrace();
  68.         }
  69.     }
  70.    
  71.     @SuppressWarnings("deprecation")
  72.     public void stop() {
  73.         if (loop) {
  74.             loop = false;
  75.         }
  76.        
  77.         if (!socket.isClosed()) {
  78.             try {
  79.                 socket.close();
  80.             } catch (IOException e) {
  81.                 e.printStackTrace();
  82.             }
  83.         }
  84.        
  85.         if (thread.isAlive()) {
  86.             thread.stop();
  87.         }
  88.     }
  89.    
  90.     public void arenaFinished(int id, String adress, int port) {
  91.         System.out.println("Der Server mit der ID " + id + " wurde geladen!");
  92.         try {
  93.             PrintStream out = new PrintStream(lobby.getOutputStream());
  94.            
  95.             out.println("serverFinish");
  96.             out.println(id);
  97.             out.println(adress);
  98.             out.println(port);
  99.            
  100.             out.flush();
  101.         } catch (IOException e) {
  102.             e.printStackTrace();
  103.         }
  104.     }
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement