Something went wrong on our end
-
Brutzman, Don authoredBrutzman, Don authored
AngelMulticastReceiver.java 2.80 KiB
package MV3500Cohort2018JanuaryMarch.homework2;
import java.io.*;
import java.net.*;
/**
*
* @author mcgredo
*/
public class AngelMulticastReceiver {
/** socket value of shared interest */
public static final String MULTICAST_ADDRESS = "239.1.2.15";
/** socket value of shared interest */
public static final int DESTINATION_PORT = 1717;
/** How many routers can be crossed */
static final int TTL = 10;
/** run the program
* @param args command-line arguments, string parameters (unused) */
@SuppressWarnings("deprecation")
public static void main(String[] args)
{
try
{
// This is a java/IPv6 problem. You should also add it to the
// arguments used to start the app, eg -Djava.net.preferIPv4Stack=true
// set in the "run" section of preferences. Also, typically
// netbeans must be restarted after these settings.
// https://stackoverflow.com/questions/18747134/getting-cant-assign-requested-address-java-net-socketexception-using-ehcache
System.setProperty("java.net.preferIPv4Stack", "true");
MulticastSocket multicastSocket = new MulticastSocket(DESTINATION_PORT);
multicastSocket.setTimeToLive(TTL);
InetAddress multicastAddress = InetAddress.getByName(MULTICAST_ADDRESS);
System.out.println(multicastAddress);
// Join group useful on receiving side
multicastSocket.joinGroup(multicastAddress);
// You can join multiple groups here
while(true)
{
byte[] packetArray = new byte[1500];
DatagramPacket packet = new DatagramPacket(packetArray, packetArray.length);
multicastSocket.receive(packet);
ByteArrayInputStream bais = new ByteArrayInputStream(packet.getData());
DataInputStream dis = new DataInputStream(bais);
char type = dis.readChar();
if (type == 'A') {
float firstNumber = dis.readFloat();
float secondNumber = dis.readFloat();
float thirdNumber = dis.readFloat();
System.out.println("Abrams POS: (x: " + firstNumber + ", y: " + secondNumber +", z: " + thirdNumber + " )");
}
if (type == 'B') {
int lngth = dis.readInt();
String informationLine = "";
for(int i=0; i<lngth; i++) {
informationLine += dis.readChar();
}
System.out.println(informationLine);
}
}
}
catch(Exception e)
{
System.out.println(e);
}
}
}