send out to every client fix

main
hba56 8 years ago
parent 2c06a46ad2
commit 731c0b0e61

@ -60,7 +60,6 @@ public class NetworkInterface {
for(Map.Entry<ClientAddress, HostGame> 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){

@ -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];

@ -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;
}
}

Loading…
Cancel
Save