From a05a41d5ecbce9037a2f2ca0cded082a2eedb670 Mon Sep 17 00:00:00 2001 From: Michael Rausch Date: Thu, 28 Sep 2017 15:57:59 +1300 Subject: [PATCH 1/3] Added port number randomization - Servers all run on different ports, so multiple servers can run on one host - Port is displayed in lobby Tags: #story[1281] --- .../DiscoveryServerClient.java | 2 +- .../seng302/gameServer/MainServerThread.java | 12 +- .../java/seng302/visualiser/GameClient.java | 6 +- .../controllers/LobbyController.java | 8 ++ .../dialogs/ServerCreationController.java | 2 +- src/main/resources/views/LobbyView.fxml | 114 +++++++----------- .../DisconnectionTest.java | 2 +- .../RegularPacketsTest.java | 2 +- src/test/java/steps/SendChatSteps.java | 4 +- src/test/java/steps/ToggleSailSteps.java | 2 +- 10 files changed, 75 insertions(+), 79 deletions(-) diff --git a/src/main/java/seng302/discoveryServer/DiscoveryServerClient.java b/src/main/java/seng302/discoveryServer/DiscoveryServerClient.java index 4454d25c..80521951 100644 --- a/src/main/java/seng302/discoveryServer/DiscoveryServerClient.java +++ b/src/main/java/seng302/discoveryServer/DiscoveryServerClient.java @@ -19,7 +19,7 @@ import java.util.Timer; import java.util.TimerTask; public class DiscoveryServerClient { - private final Integer UPDATE_INTERVAL_MS = 700; + private final Integer UPDATE_INTERVAL_MS = 1000; private static String roomCode = null; private Timer serverListingUpdateTimer; diff --git a/src/main/java/seng302/gameServer/MainServerThread.java b/src/main/java/seng302/gameServer/MainServerThread.java index e67a9567..b8afa377 100644 --- a/src/main/java/seng302/gameServer/MainServerThread.java +++ b/src/main/java/seng302/gameServer/MainServerThread.java @@ -35,6 +35,7 @@ public class MainServerThread implements Runnable, ClientConnectionDelegate { private Logger logger = LoggerFactory.getLogger(MainServerThread.class); private static final int PORT = 4942; + private static int selectedPort = PORT; private static final Integer CLIENT_UPDATES_PER_SECOND = 60; private boolean terminated; @@ -65,7 +66,7 @@ public class MainServerThread implements Runnable, ClientConnectionDelegate { .setMapName(regattaXMLData.getCourseName()) .setCapacity(capacity) .setNumberOfPlayers(numPlayers - 1) - .registerGame(PORT, regattaXMLData.getRegattaName()); + .registerGame(selectedPort, regattaXMLData.getRegattaName()); } catch (IOException e) { logger.warn("Could not register server"); } @@ -74,7 +75,10 @@ public class MainServerThread implements Runnable, ClientConnectionDelegate { public MainServerThread() { new GameState(); try { - serverSocket = new ServerSocket(PORT); + serverSocket = new ServerSocket(0); + selectedPort = serverSocket.getLocalPort(); + System.out.println("selectedPort = " + selectedPort); + } catch (IOException e) { logger.trace("IO error in server thread handler upon trying to make new server socket", 0); @@ -459,4 +463,8 @@ public class MainServerThread implements Runnable, ClientConnectionDelegate { public boolean hasStarted() { return hasStarted; } + + public int getPortNumber() { + return selectedPort; + } } diff --git a/src/main/java/seng302/visualiser/GameClient.java b/src/main/java/seng302/visualiser/GameClient.java index 63df3d27..95ff2ea1 100644 --- a/src/main/java/seng302/visualiser/GameClient.java +++ b/src/main/java/seng302/visualiser/GameClient.java @@ -165,7 +165,7 @@ public class GameClient { } try { - startClientToServerThread(ipAddress, 4942); + startClientToServerThread(ipAddress, server.getPortNumber()); } catch (IOException e) { showConnectionError("Cannot connect to server as host"); } @@ -199,8 +199,10 @@ public class GameClient { this.lobbyController = ViewManager.getInstance().goToLobby(false); + lobbyController.setPortNumber(""+server.getPortNumber()); + ViewManager.getInstance().setPlayerList(clientLobbyList); - return new ServerDescription(serverName, regattaData.getCourseName(), GameState.getNumberOfPlayers(), GameState.getCapacity(), ipAddress, 4942); + return new ServerDescription(serverName, regattaData.getCourseName(), GameState.getNumberOfPlayers(), GameState.getCapacity(), ipAddress, server.getPortNumber()); } private void tearDownConnection() { diff --git a/src/main/java/seng302/visualiser/controllers/LobbyController.java b/src/main/java/seng302/visualiser/controllers/LobbyController.java index 84be615c..9035085d 100644 --- a/src/main/java/seng302/visualiser/controllers/LobbyController.java +++ b/src/main/java/seng302/visualiser/controllers/LobbyController.java @@ -71,6 +71,8 @@ public class LobbyController implements Initializable { @FXML private Label roomLabel; @FXML + private Label portNumber; + @FXML private Pane speedTokenPane, handlingTokenPane, windWalkerTokenPane, bumperTokenPane, randomTokenPane; //---------FXML END---------// @@ -85,6 +87,8 @@ public class LobbyController implements Initializable { @Override public void initialize(URL location, ResourceBundle resources) { roomLabel.setText(""); + portNumber.setText(""); + this.playerBoats = ViewManager.getInstance().getGameClient().getAllBoatsMap(); if (this.playersColor == null) { @@ -376,4 +380,8 @@ public class LobbyController implements Initializable { public void setRoomCode(String roomCode) { roomLabel.setText("Room: " + roomCode); } + + public void setPortNumber(String p){ + portNumber.setText("Port: " + p); + } } diff --git a/src/main/java/seng302/visualiser/controllers/dialogs/ServerCreationController.java b/src/main/java/seng302/visualiser/controllers/dialogs/ServerCreationController.java index fcd33e0d..5c023e24 100644 --- a/src/main/java/seng302/visualiser/controllers/dialogs/ServerCreationController.java +++ b/src/main/java/seng302/visualiser/controllers/dialogs/ServerCreationController.java @@ -115,7 +115,7 @@ public class ServerCreationController implements Initializable { */ private void createServer() { ServerDescription serverDescription = ViewManager.getInstance().getGameClient() - .runAsHost("localhost", 4941, serverName.getText(), (int) maxPlayersSlider + .runAsHost("localhost", 0, serverName.getText(), (int) maxPlayersSlider .getValue(), mapMaker.getCurrentRacePath(), (int) legsSlider.getValue(), pickupsCheckBox.isSelected()); if (serverDescription == null){ diff --git a/src/main/resources/views/LobbyView.fxml b/src/main/resources/views/LobbyView.fxml index 08f135c7..432fd4e7 100644 --- a/src/main/resources/views/LobbyView.fxml +++ b/src/main/resources/views/LobbyView.fxml @@ -66,6 +66,11 @@ + + @@ -80,12 +85,9 @@ - - - + + + @@ -110,116 +112,92 @@ - + - + - + - + - - + - - + - - + - - + - - + - + - - - - - - + + + + + + @@ -236,7 +214,7 @@ - - + + diff --git a/src/test/java/seng302/visualiser/ClientToServerTests/DisconnectionTest.java b/src/test/java/seng302/visualiser/ClientToServerTests/DisconnectionTest.java index 6bc3e9ad..01dfc8f9 100644 --- a/src/test/java/seng302/visualiser/ClientToServerTests/DisconnectionTest.java +++ b/src/test/java/seng302/visualiser/ClientToServerTests/DisconnectionTest.java @@ -12,7 +12,7 @@ public class DisconnectionTest { @Test public void testServerDisconnection () throws Exception { MainServerThread serverThread = new MainServerThread(); - ClientToServerThread clientThread = new ClientToServerThread("localhost", 4942); + ClientToServerThread clientThread = new ClientToServerThread("localhost", serverThread.getPortNumber()); Thread.sleep(1000); clientThread.addDisconnectionListener(message -> Assert.assertTrue(message != null)); serverThread.terminate(); diff --git a/src/test/java/seng302/visualiser/ClientToServerTests/RegularPacketsTest.java b/src/test/java/seng302/visualiser/ClientToServerTests/RegularPacketsTest.java index 9dc6fd30..c96cede2 100644 --- a/src/test/java/seng302/visualiser/ClientToServerTests/RegularPacketsTest.java +++ b/src/test/java/seng302/visualiser/ClientToServerTests/RegularPacketsTest.java @@ -20,7 +20,7 @@ public class RegularPacketsTest { public void setup() throws Exception { new GameState(); serverThread = new MainServerThread(); - clientThread = new ClientToServerThread("localhost", 4942); + clientThread = new ClientToServerThread("localhost", serverThread.getPortNumber()); GameState.setCurrentStage(GameStages.RACING); } diff --git a/src/test/java/steps/SendChatSteps.java b/src/test/java/steps/SendChatSteps.java index 9f915333..87a224ad 100644 --- a/src/test/java/steps/SendChatSteps.java +++ b/src/test/java/steps/SendChatSteps.java @@ -45,7 +45,7 @@ public class SendChatSteps { } catch (InterruptedException ie) { ie.printStackTrace(); } - host = new ClientToServerThread("localhost", 4942); + host = new ClientToServerThread("localhost", mst.getPortNumber()); host.addStreamObserver(() -> { while (host.getPacketQueue().peek() != null) { StreamPacket packet = host.getPacketQueue().poll(); @@ -68,7 +68,7 @@ public class SendChatSteps { } catch (InterruptedException ie) { ie.printStackTrace(); } - client = new ClientToServerThread("localhost", 4942); + client = new ClientToServerThread("localhost", mst.getPortNumber()); try { Thread.sleep(1000); } catch (InterruptedException ie) { diff --git a/src/test/java/steps/ToggleSailSteps.java b/src/test/java/steps/ToggleSailSteps.java index 3899e29b..1c6c173c 100644 --- a/src/test/java/steps/ToggleSailSteps.java +++ b/src/test/java/steps/ToggleSailSteps.java @@ -44,7 +44,7 @@ public class ToggleSailSteps { } catch (InterruptedException ie) { ie.printStackTrace(); } - client = new ClientToServerThread("localhost", 4942); + client = new ClientToServerThread("localhost", mst.getPortNumber()); try { Thread.sleep(100); } catch (InterruptedException ie) { From ed9b7acc620c70df1f81250a187fc129137c96a8 Mon Sep 17 00:00:00 2001 From: William Muir Date: Thu, 28 Sep 2017 16:03:56 +1300 Subject: [PATCH 2/3] New Map! Waiheke #story[1274] --- .../java/seng302/visualiser/MapMaker.java | 2 +- src/main/resources/maps/waiheke.xml | 61 +++++++++++++++++++ 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/maps/waiheke.xml diff --git a/src/main/java/seng302/visualiser/MapMaker.java b/src/main/java/seng302/visualiser/MapMaker.java index 946d36e6..894b8e69 100644 --- a/src/main/java/seng302/visualiser/MapMaker.java +++ b/src/main/java/seng302/visualiser/MapMaker.java @@ -35,7 +35,7 @@ public class MapMaker { private XMLGenerator xmlGenerator = new XMLGenerator(); private List maps = new ArrayList<>( - Arrays.asList("default.xml", "horseshoe.xml", "loop.xml", "madagascar.xml")); + Arrays.asList("default.xml", "horseshoe.xml", "loop.xml", "madagascar.xml", "waiheke.xml")); public static MapMaker getInstance() { if (instance == null) { diff --git a/src/main/resources/maps/waiheke.xml b/src/main/resources/maps/waiheke.xml new file mode 100644 index 00000000..41598416 --- /dev/null +++ b/src/main/resources/maps/waiheke.xml @@ -0,0 +1,61 @@ + + + + Waiheke + + -36.80008 + 175.012225 + + 10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 261f68f1432825c7b78a249e6444beaa93dd961e Mon Sep 17 00:00:00 2001 From: Michael Rausch Date: Thu, 28 Sep 2017 16:03:59 +1300 Subject: [PATCH 3/3] Added port number randomization - Servers all run on different ports, so multiple servers can run on one host - Port is displayed in lobby Tags: #story[1281] --- .../visualiser/controllers/dialogs/ServerCreationController.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/seng302/visualiser/controllers/dialogs/ServerCreationController.java b/src/main/java/seng302/visualiser/controllers/dialogs/ServerCreationController.java index 2f69db2f..3cf9fc5e 100644 --- a/src/main/java/seng302/visualiser/controllers/dialogs/ServerCreationController.java +++ b/src/main/java/seng302/visualiser/controllers/dialogs/ServerCreationController.java @@ -115,7 +115,6 @@ public class ServerCreationController implements Initializable { */ private void createServer() { ServerDescription serverDescription = ViewManager.getInstance().getGameClient() - .runAsHost("localhost", 0, serverName.getText(), (int) maxPlayersSlider .runAsHost(serverName.getText(), (int) maxPlayersSlider .getValue(), mapMaker.getCurrentRacePath(), (int) legsSlider.getValue(), pickupsCheckBox.isSelected());