Advertisement
fjboc

Server.java

Apr 21st, 2019
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.10 KB | None | 0 0
  1. import java.io.IOException;
  2. import java.io.InputStream;
  3. import java.io.ObjectInputStream;
  4. import java.io.ObjectOutputStream;
  5. import java.io.OutputStream;
  6. import java.net.Socket;
  7. import java.net.SocketException;
  8. import java.net.SocketTimeoutException;
  9. import java.util.ArrayList;
  10.  
  11. @SuppressWarnings("unused")
  12. public class Server implements Runnable {
  13.     protected static Socket socket = null;
  14.     protected static ArrayList<Player> players = new ArrayList<Player>();
  15.    
  16.     private ArrayList<String> lib = new ArrayList<String>();
  17.     private int loops;
  18.     private int maxLoops = 10;
  19.     private int timeout = 10000;
  20.     protected static boolean killThread = false;
  21.     private Object lastCommandReceived;
  22.     private static Code lastCommandSent;
  23.     private boolean authenticated = true; //Should be false normally, of course
  24.    
  25.     protected static String ip;
  26.     protected static int port;
  27.     protected static byte maxPlayers;
  28.     protected static int connectedPlayers;
  29.     protected static short board;
  30.    
  31.     public Server(Socket socket, String ip, String port, byte maxPlayers, int connectedPlayers, short board) throws IOException {
  32.         Server.socket = socket;
  33.         Server.ip = ip;
  34.         Server.port = Integer.parseInt(port);
  35.         Server.maxPlayers = maxPlayers;
  36.         Server.connectedPlayers = connectedPlayers;
  37.         Server.board = board;
  38.     }
  39.    
  40.     public void run() {
  41.         CommandsMethodsServer objCommandsMethodsServer = new CommandsMethodsServer();
  42.         try {
  43.             socket.setSoTimeout(timeout);
  44.         } catch (SocketException e) {
  45.             System.out.println("Error while trying to set Socket timeout. ");
  46.             System.out.println("Closing Thread..." + Thread.currentThread());
  47.             objCommandsMethodsServer.disconnectClient();
  48.         }
  49.         if (!killThread) {
  50.             loadLibrary();
  51.             objCommandsMethodsServer.requestAuthData();
  52.             loopWaitForData(objCommandsMethodsServer);
  53.         }
  54.     }
  55.  
  56.     public void loopWaitForData(CommandsMethodsServer objCommandsMethodsServer) {
  57.         while (!killThread) {
  58.             System.out.println(maxLoops + ", " + loops);
  59.             if (maxLoops - loops > 0) {
  60.                 try {
  61.                     waitForData();
  62.                 } catch (SocketTimeoutException e) {
  63.                     System.out.println("Error occurred while waiting for Data. Thread disconnected? Sending reminder. " + Thread.currentThread());
  64.                     if (!authenticated) {
  65.                         System.out.println("Kicking Client: Not authenticated");
  66.                         objCommandsMethodsServer.disconnectClient();
  67.                     } else {
  68.                         objCommandsMethodsServer.commandReminder();
  69.                     }
  70.                 } catch (ClassNotFoundException | IOException e) {
  71.                     loops = loops + 1;
  72.                     System.out.println("Error occurred while waiting for Data. Thread disconnected? Waiting for more Data. " + Thread.currentThread());
  73.                     loopWaitForData(objCommandsMethodsServer);
  74.                 }
  75.             } else if (maxLoops - loops == 0) {
  76.                 System.out.println("Error occurred while waiting for Data. Maximum trys reached. Disbanding connection. " + Thread.currentThread());
  77.                 objCommandsMethodsServer.disconnectClient();
  78.                 loops = loops + 1;
  79.             } else {
  80.                 System.out.println("Closing Thread..." + Thread.currentThread());
  81.                 objCommandsMethodsServer.disconnectClient();
  82.             }
  83.         }
  84.     }
  85.  
  86.     public void waitForData() throws IOException, ClassNotFoundException {
  87.         Code code;
  88.         System.out.println("Waiting for Data...");
  89.         ObjectInputStream inputObject = new ObjectInputStream(socket.getInputStream());
  90.         while ((code = (Code) inputObject.readObject()) != null) {
  91.             System.out.println("Received Data...");
  92.             System.out.println("Input received: " + code);
  93.             System.out.println("Code received: " + code.getCode());
  94.            
  95.             if (code.returnData()) {
  96.                 System.out.println("Contains Data");
  97.             }
  98.             //Commands objCommands = new Commands();
  99.             //desc = objCommands.getDatabaseServer(string);
  100.             //System.out.println(desc);
  101.            
  102.             Commands.execCodeServer(code.getCode());
  103.             return;
  104.         }
  105.     }
  106.  
  107.     public void setPlayerData(String inputPlayerData) {
  108.         System.out.println(inputPlayerData);
  109.     }
  110.    
  111.     public void loadLibrary() {
  112.         lib.add("text");
  113.     }
  114.  
  115.     public static Code getLastCommandSent() {
  116.         return lastCommandSent;
  117.     }
  118.  
  119.     public static void setLastCommandSent(Code lastCommandSent) {
  120.         Server.lastCommandSent = lastCommandSent;
  121.     }
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement