From 731c0b0e61ddbae94996daf0052cc551b6f0fae5 Mon Sep 17 00:00:00 2001 From: hba56 Date: Wed, 13 Sep 2017 13:34:26 +1200 Subject: [PATCH] send out to every client fix --- .../main/java/networkInterface/NetworkInterface.java | 6 +----- .../MessageDecoders/HostGameMessageDecoder.java | 3 ++- .../src/main/java/network/Messages/HostGame.java | 10 ++++++++++ 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/matchBrowser/src/main/java/networkInterface/NetworkInterface.java b/matchBrowser/src/main/java/networkInterface/NetworkInterface.java index 52146149..84849c77 100644 --- a/matchBrowser/src/main/java/networkInterface/NetworkInterface.java +++ b/matchBrowser/src/main/java/networkInterface/NetworkInterface.java @@ -60,7 +60,6 @@ public class NetworkInterface { for(Map.Entry tableEntry: matchTable.getMatchTable().entrySet()) { HostGame game = tableEntry.getValue(); if(game != null) { - System.out.println(game.getIp()); games.add(game); } } @@ -70,7 +69,6 @@ public class NetworkInterface { byte[] message = encoder.encode(new HostGamesRequest(games)); System.out.println(LocalDateTime.now() + ": Sending " + games.size() + " game/s"); for(ClientAddress address: clientsAddresses) { - System.out.println("sending to: " + address.getIp()); serverSocket.send(new DatagramPacket(message, message.length, InetAddress.getByName(address.getIp()), 4941)); } } catch (InvalidMessageException | IOException e) { @@ -99,9 +97,6 @@ public class NetworkInterface { DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); serverSocket.receive(receivePacket); -// System.out.println(receivePacket.getAddress()); -// System.out.println(this.clientsAddresses); - BinaryMessageDecoder messageDecoder = new BinaryMessageDecoder(receivePacket.getData()); switch (MessageType.fromByte(messageDecoder.getHeaderMessageType())){ case HOST_GAME: @@ -110,6 +105,7 @@ public class NetworkInterface { HostGame newKnownGame; try{ newKnownGame = (HostGame) decoder.decode(messageDecoder.getMessageBody()); + newKnownGame.setIp(receivePacket.getAddress().getHostAddress()); this.matchTable.addEntry(new ClientAddress(receivePacket.getAddress().getHostAddress(), receivePacket.getPort()), newKnownGame); }catch (InvalidMessageException e){ diff --git a/racevisionGame/src/main/java/network/MessageDecoders/HostGameMessageDecoder.java b/racevisionGame/src/main/java/network/MessageDecoders/HostGameMessageDecoder.java index 3991b83e..33d3a334 100644 --- a/racevisionGame/src/main/java/network/MessageDecoders/HostGameMessageDecoder.java +++ b/racevisionGame/src/main/java/network/MessageDecoders/HostGameMessageDecoder.java @@ -10,6 +10,7 @@ import network.Messages.RaceStatus; import java.util.Arrays; import static network.Utils.ByteConverter.bytesToInt; +import static network.Utils.ByteConverter.bytesToLong; public class HostGameMessageDecoder implements MessageDecoder { @@ -38,7 +39,7 @@ public class HostGameMessageDecoder implements MessageDecoder { byte ipPart2 = encodedMessage[1]; byte ipPart3 = encodedMessage[2]; byte ipPart4 = encodedMessage[3]; - String ipString = ipPart1 + "." + ipPart2 + "." + ipPart3 + "." + ipPart4; + String ipString = bytesToLong(ipPart1) + "." + bytesToLong(ipPart2) + "." + bytesToLong(ipPart3) + "." + bytesToLong(ipPart4); // System.out.println(ipString); int port = bytesToInt(Arrays.copyOfRange(encodedMessage, 4, 8)); byte map = encodedMessage[8]; diff --git a/racevisionGame/src/main/java/network/Messages/HostGame.java b/racevisionGame/src/main/java/network/Messages/HostGame.java index d03292fe..7fd5cb81 100644 --- a/racevisionGame/src/main/java/network/Messages/HostGame.java +++ b/racevisionGame/src/main/java/network/Messages/HostGame.java @@ -3,6 +3,11 @@ package network.Messages; import network.Messages.Enums.MessageType; import network.Messages.Enums.RaceStatusEnum; +import network.Utils.ByteConverter; + +import java.nio.ByteBuffer; + +import static network.Utils.ByteConverter.intToBytes; public class HostGame extends AC35Data { @@ -76,4 +81,9 @@ public class HostGame extends AC35Data { public byte getCurrentNumPlayers() { return currentNumPlayers; } + + public void setIp(String ip) { + this.ip = ip; + } } +