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]
This commit is contained in:
Michael Rausch
2017-09-28 15:57:59 +13:00
parent 8810554ce9
commit a05a41d5ec
10 changed files with 75 additions and 79 deletions
@@ -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;
}
}