Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.io.OutputStream;
- import java.net.Socket;
- import java.net.SocketException;
- import java.net.SocketTimeoutException;
- import java.util.ArrayList;
- @SuppressWarnings("unused")
- public class Server implements Runnable {
- protected static Socket socket = null;
- protected static ArrayList<Player> players = new ArrayList<Player>();
- private ArrayList<String> lib = new ArrayList<String>();
- private int loops;
- private int maxLoops = 10;
- private int timeout = 10000;
- protected static boolean killThread = false;
- private Object lastCommandReceived;
- private static Code lastCommandSent;
- private boolean authenticated = true; //Should be false normally, of course
- protected static String ip;
- protected static int port;
- protected static byte maxPlayers;
- protected static int connectedPlayers;
- protected static short board;
- public Server(Socket socket, String ip, String port, byte maxPlayers, int connectedPlayers, short board) throws IOException {
- Server.socket = socket;
- Server.ip = ip;
- Server.port = Integer.parseInt(port);
- Server.maxPlayers = maxPlayers;
- Server.connectedPlayers = connectedPlayers;
- Server.board = board;
- }
- public void run() {
- CommandsMethodsServer objCommandsMethodsServer = new CommandsMethodsServer();
- try {
- socket.setSoTimeout(timeout);
- } catch (SocketException e) {
- System.out.println("Error while trying to set Socket timeout. ");
- System.out.println("Closing Thread..." + Thread.currentThread());
- objCommandsMethodsServer.disconnectClient();
- }
- if (!killThread) {
- loadLibrary();
- objCommandsMethodsServer.requestAuthData();
- loopWaitForData(objCommandsMethodsServer);
- }
- }
- public void loopWaitForData(CommandsMethodsServer objCommandsMethodsServer) {
- while (!killThread) {
- System.out.println(maxLoops + ", " + loops);
- if (maxLoops - loops > 0) {
- try {
- waitForData();
- } catch (SocketTimeoutException e) {
- System.out.println("Error occurred while waiting for Data. Thread disconnected? Sending reminder. " + Thread.currentThread());
- if (!authenticated) {
- System.out.println("Kicking Client: Not authenticated");
- objCommandsMethodsServer.disconnectClient();
- } else {
- objCommandsMethodsServer.commandReminder();
- }
- } catch (ClassNotFoundException | IOException e) {
- loops = loops + 1;
- System.out.println("Error occurred while waiting for Data. Thread disconnected? Waiting for more Data. " + Thread.currentThread());
- loopWaitForData(objCommandsMethodsServer);
- }
- } else if (maxLoops - loops == 0) {
- System.out.println("Error occurred while waiting for Data. Maximum trys reached. Disbanding connection. " + Thread.currentThread());
- objCommandsMethodsServer.disconnectClient();
- loops = loops + 1;
- } else {
- System.out.println("Closing Thread..." + Thread.currentThread());
- objCommandsMethodsServer.disconnectClient();
- }
- }
- }
- public void waitForData() throws IOException, ClassNotFoundException {
- Code code;
- System.out.println("Waiting for Data...");
- ObjectInputStream inputObject = new ObjectInputStream(socket.getInputStream());
- while ((code = (Code) inputObject.readObject()) != null) {
- System.out.println("Received Data...");
- System.out.println("Input received: " + code);
- System.out.println("Code received: " + code.getCode());
- if (code.returnData()) {
- System.out.println("Contains Data");
- }
- //Commands objCommands = new Commands();
- //desc = objCommands.getDatabaseServer(string);
- //System.out.println(desc);
- Commands.execCodeServer(code.getCode());
- return;
- }
- }
- public void setPlayerData(String inputPlayerData) {
- System.out.println(inputPlayerData);
- }
- public void loadLibrary() {
- lib.add("text");
- }
- public static Code getLastCommandSent() {
- return lastCommandSent;
- }
- public static void setLastCommandSent(Code lastCommandSent) {
- Server.lastCommandSent = lastCommandSent;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement