Add: Added Partial Logic For Client Connection Handling And Termination In TCPServer.java.
This commit is contained in:
@@ -12,36 +12,43 @@ public class ClientHandler implements Runnable {
|
|||||||
PrintWriter out = null;
|
PrintWriter out = null;
|
||||||
List<ClientHandler> clientHandlers;
|
List<ClientHandler> clientHandlers;
|
||||||
GameController gameController;
|
GameController gameController;
|
||||||
|
|
||||||
public ClientHandler(Socket clientSocket, List<ClientHandler> clientHandlers, GameController gameController) {
|
public ClientHandler(Socket clientSocket, List<ClientHandler> clientHandlers, GameController gameController) {
|
||||||
this.clientSocket = clientSocket;
|
this.clientSocket = clientSocket;
|
||||||
this.clientHandlers = clientHandlers;
|
this.clientHandlers = clientHandlers;
|
||||||
this.gameController = gameController;
|
this.gameController = gameController;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run(){
|
public void run(){
|
||||||
clientLoop();
|
clientLoop();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void clientLoop(){
|
private void clientLoop(){
|
||||||
try{
|
try{
|
||||||
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
|
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
|
||||||
synchronized(out){
|
synchronized(out){
|
||||||
out = new PrintWriter(clientSocket.getOutputStream(), true);
|
out = new PrintWriter(clientSocket.getOutputStream(), true);
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
}
|
||||||
|
catch(IOException e){
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
String s = "";
|
String s = "";
|
||||||
try{
|
try{
|
||||||
while ((s = in.readLine()) != null) {
|
while ((s = in.readLine()) != null) {
|
||||||
|
synchronized(out){
|
||||||
System.out.println(s);
|
System.out.println(s);
|
||||||
out.println(s.toUpperCase());
|
out.println(s.toUpperCase());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
catch (IOException e) {
|
catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void notifyEvent(Object event) {
|
|
||||||
|
public void notifyEvent(Object event) {
|
||||||
synchronized(out){
|
synchronized(out){
|
||||||
out.println(event.toString());
|
out.println(event.toString());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,16 +37,15 @@ public class TCPServer {
|
|||||||
|
|
||||||
try{
|
try{
|
||||||
clientSocket = serverTCP.accept();
|
clientSocket = serverTCP.accept();
|
||||||
if(!gameController.addPlayer(clientSocket.getInputStream().toString()) || ConnectedPlayers >= clientHandlers.size()){
|
if(!gameController.addPlayer(clientSocket.getInputStream().toString()) || ConnectedPlayers > gameController.getModel().getNPlayers()){
|
||||||
clientSocket.close();
|
clientSocket.close();
|
||||||
System.out.println("Player already present or username is invalid. Connection terminated.\n");
|
System.out.println("Invalid parameters. Connection terminated.\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (IOException e){
|
catch (IOException e){
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
System.out.println("Accepted");
|
System.out.println("Accepted");
|
||||||
ConnectedPlayers++;
|
ConnectedPlayers++;
|
||||||
ClientHandler clientHandler = new ClientHandler(clientSocket, clientHandlers, gameController);
|
ClientHandler clientHandler = new ClientHandler(clientSocket, clientHandlers, gameController);
|
||||||
@@ -60,4 +59,8 @@ public class TCPServer {
|
|||||||
this.port = port;
|
this.port = port;
|
||||||
this.gameController = gameController;
|
this.gameController = gameController;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void broadcastUpdate(Object event){
|
||||||
|
clientHandlers.forEach((x) -> x.notifyEvent(event));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user