Add: Added Partial Logic For Client-Server Serialized Message Handling.
This commit is contained in:
@@ -14,10 +14,11 @@ import it.polimi.ingsw.gc14.Model.Orders.Order4;
|
|||||||
import it.polimi.ingsw.gc14.Model.Orders.Order5;
|
import it.polimi.ingsw.gc14.Model.Orders.Order5;
|
||||||
import it.polimi.ingsw.gc14.Model.GamePackage.GameStages;
|
import it.polimi.ingsw.gc14.Model.GamePackage.GameStages;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class Game {
|
public class Game implements Serializable {
|
||||||
|
|
||||||
private ArrayList<Player> playersList;
|
private ArrayList<Player> playersList;
|
||||||
private CurrentState currentState;
|
private CurrentState currentState;
|
||||||
|
|||||||
@@ -8,11 +8,15 @@ import java.util.List;
|
|||||||
|
|
||||||
public class ClientHandler implements Runnable {
|
public class ClientHandler implements Runnable {
|
||||||
private Socket clientSocket;
|
private Socket clientSocket;
|
||||||
BufferedReader in = null;
|
public ObjectInputStream in = null;
|
||||||
PrintWriter out = null;
|
public ObjectOutputStream out = null;
|
||||||
List<ClientHandler> clientHandlers;
|
List<ClientHandler> clientHandlers;
|
||||||
GameController gameController;
|
GameController gameController;
|
||||||
|
|
||||||
|
public Socket getClientSocket() {
|
||||||
|
return clientSocket;
|
||||||
|
}
|
||||||
|
|
||||||
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;
|
||||||
@@ -25,21 +29,11 @@ public class ClientHandler implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void clientLoop(){
|
private void clientLoop(){
|
||||||
try{
|
|
||||||
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
|
|
||||||
synchronized(out){
|
|
||||||
out = new PrintWriter(clientSocket.getOutputStream(), true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch(IOException e){
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
String s = "";
|
String s = "";
|
||||||
try{
|
try{
|
||||||
while ((s = in.readLine()) != null) {
|
while ((s = in.readLine()) != null) {
|
||||||
synchronized(out){
|
synchronized(out){
|
||||||
System.out.println(s);
|
//do something
|
||||||
out.println(s.toUpperCase());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -50,7 +44,15 @@ public class ClientHandler implements Runnable {
|
|||||||
|
|
||||||
public void notifyEvent(Object event){
|
public void notifyEvent(Object event){
|
||||||
synchronized(out){
|
synchronized(out){
|
||||||
out.println(event.toString());
|
try{
|
||||||
|
out = new ObjectOutputStream(clientSocket.getOutputStream());
|
||||||
|
out.writeObject(gameController.getModel());
|
||||||
|
}
|
||||||
|
catch(IOException e){
|
||||||
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package it.polimi.ingsw.gc14.Network.TCP.Server;
|
|||||||
|
|
||||||
import it.polimi.ingsw.gc14.Controller.GameController;
|
import it.polimi.ingsw.gc14.Controller.GameController;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.*;
|
||||||
import java.net.*;
|
import java.net.*;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -15,6 +15,8 @@ public class TCPServer {
|
|||||||
|
|
||||||
private List<ClientHandler> clientHandlers;
|
private List<ClientHandler> clientHandlers;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private int getConnectedPlayers(){
|
private int getConnectedPlayers(){
|
||||||
return ConnectedPlayers;
|
return ConnectedPlayers;
|
||||||
}
|
}
|
||||||
@@ -46,10 +48,27 @@ public class TCPServer {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
System.out.println("Accepted");
|
System.out.println("Accepted player: " + gameController.getModel().getPlayerByUsername(clientSocket.getInetAddress().toString()));
|
||||||
|
|
||||||
ConnectedPlayers++;
|
ConnectedPlayers++;
|
||||||
ClientHandler clientHandler = new ClientHandler(clientSocket, clientHandlers, gameController);
|
ClientHandler clientHandler = new ClientHandler(clientSocket, clientHandlers, gameController);
|
||||||
clientHandlers.add(clientHandler);
|
clientHandlers.add(clientHandler);
|
||||||
|
|
||||||
|
//Sending model to clients
|
||||||
|
if(ConnectedPlayers == gameController.getModel().getNPlayers()){
|
||||||
|
for (ClientHandler handler : clientHandlers) {
|
||||||
|
try {
|
||||||
|
synchronized(handler.out){
|
||||||
|
ObjectOutputStream socketTx = new ObjectOutputStream(handler.getClientSocket().getOutputStream());
|
||||||
|
socketTx.writeObject(gameController.getModel());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(IOException e){
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Thread t = new Thread(clientHandler);
|
Thread t = new Thread(clientHandler);
|
||||||
t.start();
|
t.start();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user