Added skeleton for Server Connection structure changes.

Added Data and Event classes for Data saving on the server.
Added DataParser class for translating requests to data.
Added ServerData package
This commit is contained in:
MickWerf
2020-05-18 14:09:48 +02:00
parent 7969746bc1
commit 8dee45a844
8 changed files with 56 additions and 15 deletions

View File

@@ -8,7 +8,6 @@ import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import netwerkprog.game.client.Client; import netwerkprog.game.client.Client;
import netwerkprog.game.server.Server;
import netwerkprog.game.util.FrameRate; import netwerkprog.game.util.FrameRate;
public class MainGame extends ApplicationAdapter { public class MainGame extends ApplicationAdapter {
@@ -44,7 +43,7 @@ public class MainGame extends ApplicationAdapter {
private void connectToServer() { private void connectToServer() {
client = new Thread(new Client("localhost", Server.PORT)); client = new Thread(new Client("localhost"));
try { try {
client.start(); client.start();
} catch (Exception e) { } catch (Exception e) {

View File

@@ -1,6 +1,7 @@
package netwerkprog.game.client; package netwerkprog.game.client;
import netwerkprog.game.util.Controller; import netwerkprog.game.util.Controller;
import netwerkprog.game.util.ServerData;
import java.io.DataInputStream; import java.io.DataInputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
@@ -16,8 +17,8 @@ public class Client extends Controller {
public Client(String hostname, int port) { public Client(String hostname) {
this.port = port; this.port = ServerData.port();
this.hostname = hostname; this.hostname = hostname;
} }

View File

@@ -8,7 +8,6 @@ public class Server {
private SessionController sessionController; private SessionController sessionController;
private Thread sessionThread; private Thread sessionThread;
private HashMap<String, Thread> gameThreads; private HashMap<String, Thread> gameThreads;
public static final int PORT = 8000;
public void start() { public void start() {
this.sessionController = new SessionController(); this.sessionController = new SessionController();

View File

@@ -1,8 +1,10 @@
package netwerkprog.game.server.controllers; package netwerkprog.game.server.controllers;
import netwerkprog.game.server.Server;
import netwerkprog.game.server.ServerClient; import netwerkprog.game.server.ServerClient;
import netwerkprog.game.server.data.Data;
import netwerkprog.game.server.data.DataParser;
import netwerkprog.game.util.Controller; import netwerkprog.game.util.Controller;
import netwerkprog.game.util.ServerData;
import java.io.DataInputStream; import java.io.DataInputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
@@ -14,6 +16,7 @@ import java.util.HashMap;
public class SessionController extends Controller { public class SessionController extends Controller {
private ServerSocket serverSocket; private ServerSocket serverSocket;
private DataParser parser;
private ArrayList<ServerClient> clients = new ArrayList<>(); private ArrayList<ServerClient> clients = new ArrayList<>();
private HashMap<String, Thread> clientThreads = new HashMap<>(); private HashMap<String, Thread> clientThreads = new HashMap<>();
@@ -23,29 +26,29 @@ public class SessionController extends Controller {
public void connect() { public void connect() {
try { try {
this.serverSocket = new ServerSocket(Server.PORT); this.serverSocket = new ServerSocket(ServerData.port());
System.out.println("[SERVER] listening on port " + Server.PORT); System.out.println("[SERVER] listening on port " + ServerData.port());
Socket socket = serverSocket.accept(); Socket socket = serverSocket.accept();
System.out.println("[SERVER] got new client on " + socket.getInetAddress().getHostAddress()); System.out.println("[SERVER] got new client on " + socket.getInetAddress().getHostAddress());
DataOutputStream outputStream = new DataOutputStream(socket.getOutputStream()); DataOutputStream outputStream = new DataOutputStream(socket.getOutputStream());
DataInputStream inputStream = new DataInputStream(socket.getInputStream()); DataInputStream inputStream = new DataInputStream(socket.getInputStream());
outputStream.writeUTF("Enter nickname: "); outputStream.writeUTF("Enter username: ");
String nickname = inputStream.readUTF(); String username = inputStream.readUTF();
System.out.println("[SERVER] got nickname " + nickname); System.out.println("[SERVER] got username " + username);
ServerClient serverClient = new ServerClient(nickname, socket, this); ServerClient serverClient = new ServerClient(username, socket, this);
Thread t = new Thread(serverClient); Thread t = new Thread(serverClient);
t.start(); t.start();
clientThreads.put(nickname, t); clientThreads.put(username, t);
this.clients.add(serverClient); this.clients.add(serverClient);
sendMessage(nickname, "--- Welcome! ---\nPeople online : " + clients.size()); sendMessage(username, "--- Welcome! ---\nPeople online : " + clients.size());
clients.forEach(yeet -> sendToEveryoneExcept(nickname, nickname + " joined the server! [" + socket.getInetAddress().getHostAddress() + "]")); clients.forEach(yeet -> sendToEveryoneExcept(username, username + " joined the server! [" + socket.getInetAddress().getHostAddress() + "]"));
this.serverSocket.close(); this.serverSocket.close();
@@ -101,4 +104,17 @@ public class SessionController extends Controller {
} }
} }
} }
public void listen() {
}
//will most likely be removed.
public void parseData(String request) {
Data data = this.parser.parse(request);
}
public void sendData(Data data) {
}
} }

View File

@@ -0,0 +1,4 @@
package netwerkprog.game.server.data;
public class Data {
}

View File

@@ -0,0 +1,10 @@
package netwerkprog.game.server.data;
public class DataParser {
public DataParser() {
}
public Data parse(String request) {
return null;
}
}

View File

@@ -0,0 +1,4 @@
package netwerkprog.game.server.data;
public class Event {
}

View File

@@ -0,0 +1,8 @@
package netwerkprog.game.util;
public class ServerData {
public static int port() {
return 8000;
}
}