Skip to content
Snippets Groups Projects
Commit c632ca74 authored by Busch Elias's avatar Busch Elias
Browse files

Delete: Removed unnecessary Server classes.

parent 65a47a74
No related branches found
No related tags found
3 merge requests!74V1,!73Initial commit,!71Merge DataBase into Development
package de.hdm_stuttgart.battlearena.Model.Multiplayer;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.net.*;
import java.io.*;
import java.util.Arrays;
public class Client {
private Socket clientSocket;
private PrintWriter out;
private BufferedReader in;
private static final Logger log = LogManager.getLogger(Client.class);
public void startConnection(String ip, int port) throws IOException {
clientSocket = new Socket(ip, port);
out = new PrintWriter(clientSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
}
public int[] sendcords(int[] cords) throws IOException {
String message = String.join(",", Arrays.stream(cords).mapToObj(String::valueOf).toArray(String[]::new));
out.println(message);
log.info("Sent coordinates: " + message);
String resp = in.readLine();
return convertStringToArray(resp);
}
public static int[] convertStringToArray(String inputString) {
// Remove brackets and split by comma
String[] parts = inputString.substring(1, inputString.length() - 1).split(",");
// Convert each part to integer
int[] result = new int[parts.length];
for (int i = 0; i < parts.length; i++) {
result[i] = Integer.parseInt(parts[i].trim());
}
return result;
}
public void stopConnection() throws IOException {
in.close();
out.close();
clientSocket.close();
}
}
package de.hdm_stuttgart.battlearena.Model.Multiplayer;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.io.IOException;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
public class ConnectionHandler {
private static int pX = 0;
private static int pY = 0;
private int enemyX;
private int enemyY;
private static int playerID = 0;
private static int[] coordinates = {pX,pY,playerID};
private static final Logger log = LogManager.getLogger(ConnectionHandler.class);
public static void main(String[] args) throws IOException, InterruptedException {
Client client = new Client();
client.startConnection("localhost", 4444);
while (true){
int[] cords = client.sendcords(coordinates);
System.out.println("Enemy X: " + cords[0]);
System.out.println("Enemy Y: " + cords[1]);
System.out.println("Your PlayerID is " + cords[2]);
pX++;
pY++;
playerID = cords[2];
//Assign the Values to the message to send:
coordinates[0] = pX;
coordinates[1] = pY;
coordinates[2] = playerID;
TimeUnit.SECONDS.sleep(1);
}
//stop the connection:
//client.stopConnection();
}
class ConnectionThread implements Runnable {
public void run() {
try {
Thread.sleep(250);
} catch (InterruptedException e){
log.error("Error in Thread.sleep()");
}
}
}
public int getpX() {
return pX;
}
public void setpX(int pX) {
this.pX = pX;
}
public int getpY() {
return pY;
}
public void setpY(int pY) {
this.pY = pY;
}
public int getEnemyX() {
return enemyX;
}
public void setEnemyX(int enemyX) {
this.enemyX = enemyX;
}
public int getEnemyY() {
return enemyY;
}
public void setEnemyY(int enemyY) {
this.enemyY = enemyY;
}
}
package de.hdm_stuttgart.battlearena.Model.Multiplayer;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.net.*;
import java.io.*;
import java.util.Arrays;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class Server {
private static final Logger log = LogManager.getLogger(Server.class);
private ServerSocket serverSocket;
private static boolean isServerRunning = true;
private static int px;
private static int py;
private static int enemyx = 0;
private static int enemyy = 0;
private static int playerID;
private static int playercount = 0;
private static int[] cords;
private static int[] returncords = {enemyx,enemyy,playerID};
public static void main(String[] args) throws IOException {
Server server = new Server();
log.info("server starting...");
server.start("localhost",4444);
}
public void start(String localhost, int port) throws IOException {
serverSocket = new ServerSocket(port);
log.info("server started!");
while (true){
new ServerHandler(serverSocket.accept()).start();
}
}
private static class ServerHandler extends Thread {
private final Socket clientSocket;
private PrintWriter out;
private BufferedReader in;
public ServerHandler(Socket socket) {
this.clientSocket = socket;
}
public void run() {
ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
executorService.scheduleAtFixedRate(() -> {
try {
BufferedReader localIn = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
PrintWriter localOut = new PrintWriter(clientSocket.getOutputStream(), true);
String inputLine = localIn.readLine();
if (inputLine != null) {
// Assuming that the input line is a comma-separated list of integers
String[] coordinates = inputLine.split(",");
cords = new int[coordinates.length];
for (int i = 0; i < coordinates.length; i++) {
cords[i] = Integer.parseInt(coordinates[i]);
}
//first connect of a client:
if(playercount == 0){
//first player to connect
playercount++;
returncords[2] = 1;
} else if(playercount == 1){
//second player to connect
if(cords[2] == 1){
returncords[2] = 1;
} else {
playercount++;
returncords[2] = 2;
}
} else if(playercount == 2){
//check which client has connected
if (cords[2] == 1) { //player
px = cords[0];
py = cords[1];
//set the cords to return:
returncords[0] = enemyx;
returncords[1] = enemyy;
//set playerID:
returncords[2] = 1;
} else if(cords[2] == 2) { //enemy
enemyx = cords[0];
enemyy = cords[1];
//set the cords to return:
returncords[0] = px;
returncords[1] = py;
//set playerID:
returncords[2] = 2;
}
}
localOut.println(Arrays.toString(returncords));
localOut.flush();
}
log.info("Player X / Y : " + px + " / " + py + " Enemy X / Y : " + enemyx + " / " + enemyy);
//check if server was shut down:
if (!isServerRunning) {
executorService.shutdown();
try {
if (!executorService.awaitTermination(5, TimeUnit.SECONDS)) {
executorService.shutdownNow();
}
} catch (InterruptedException e) {
log.error("Error waiting for executor service termination: " + e.getMessage());
}
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}, 0, 250, TimeUnit.MILLISECONDS);
}
}
public void stopServer() {
isServerRunning = false;
try {
serverSocket.close(); // Close the server socket to break out of accept() in the main thread
} catch (IOException e) {
log.error("Error closing server socket: " + e.getMessage());
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment