Skip to content
Snippets Groups Projects
Commit a6ab491f authored by Brennenstuhl, Tobias FORNATL, GY's avatar Brennenstuhl, Tobias FORNATL, GY
Browse files

Fixed Naming Conventions

parent 816250fb
No related branches found
No related tags found
No related merge requests found
Showing
with 709 additions and 0 deletions
package MV3500Cohort2019JulySeptember.projects.BrennenstuhlKnobelochMcCann;
import java.io.*;
import java.net.*;
import java.util.*;
import edu.nps.moves.dis7.*;
import java.util.logging.Level;
import java.util.logging.Logger;
public class BRE_KNO_MCC_PC1_MCAST_PduSender
{
public static final String DEFAULT_MULTICAST_ADDRESS = "239.1.2.3";
public static final int DEFAULT_MULTICAST_PORT = 2342;
static boolean keepRunning = true;
int senderIntervall = 0;
public void run(int numbOfPDUS)
{
System.out.println("BRE_KNO_MCC_PC1_MCAST_PduSender started...");
System.out.println("Generate PDUs and note issues, if any...");
while (keepRunning){
List<Pdu> generatedPdusList = createPDU(numbOfPDUS, senderIntervall);
// Send the PDUs we created
System.out.println("Send the " + generatedPdusList.size() + " PDUs we created...");
try
{
InetAddress localMulticastAddress = InetAddress.getByName(DEFAULT_MULTICAST_ADDRESS);
MulticastSocket socket = new MulticastSocket(DEFAULT_MULTICAST_PORT);
socket.joinGroup(localMulticastAddress);
for (int idx = 0; idx < generatedPdusList.size(); idx++)
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
byte[] buffer;
Pdu aPdu = generatedPdusList.get(idx);
try
{
aPdu.marshal(dos);
}
catch (Exception ex)
{
Logger.getLogger(BRE_KNO_MCC_PC1_MCAST_PduSender.class.getName()).log(Level.SEVERE, null, ex);
}
buffer = baos.toByteArray();
DatagramPacket packet = new DatagramPacket(buffer, buffer.length, localMulticastAddress, DEFAULT_MULTICAST_PORT);
socket.send(packet);
try
{
Thread.sleep(100L);
}
catch (InterruptedException ex)
{
}
}
}
catch (IOException e)
{
System.out.println(e);
}
senderIntervall++;
try
{
Thread.sleep(2000);
}
catch (InterruptedException ex)
{
Logger.getLogger(BRE_KNO_MCC_PC1_MCAST_PduSender.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
public static void main(String args[])
{
BRE_KNO_MCC_PC1_MCAST_PduSender sender = new BRE_KNO_MCC_PC1_MCAST_PduSender();
sender.run(5);
}
private List<Pdu> createPDU(int numbOfPDUs, int intervall)
{
List<Pdu> list = new ArrayList();
for (int i = 0; i < numbOfPDUs; i++)
{
CommentPdu newCommentPdu = new CommentPdu();
ArrayList<VariableDatum> payloadList = new ArrayList<VariableDatum>();
ArrayList<String> commentsList = new ArrayList<>();
newCommentPdu.setTimestamp((intervall * 5) + i );
commentsList.add("Chuck Norris is comming to town! " + " Warning " + newCommentPdu.getTimestamp());
for (String comment : commentsList)
{
VariableDatum newVariableDatum = new VariableDatum();
newVariableDatum.setVariableDatumValue(comment.getBytes());
payloadList.add(newVariableDatum);
}
newCommentPdu.setVariableDatums(payloadList);
Pdu aPdu = newCommentPdu;
list.add(aPdu);
}
return list;
}
}
package MV3500Cohort2019JulySeptember.projects.BrennenstuhlKnobelochMcCann;
import edu.nps.moves.dis7.Pdu;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
public class BRE_KNO_MCC_PC2_Controller
{
static boolean keepRunningMainThread = true;
static BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver pc2_pc1_receiver;
static BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender pc2_pc3_sender;
static BRE_KNO_MCC_PC2_PC3_UNICAST_PduReceiver pc2_pc3_receiver;
static InetAddress mcastIPPC1;
static InetAddress ipPC3;
static int portPC1;
static int portPC3;
public static void main(String[] args) throws UnknownHostException
{
mcastIPPC1 = InetAddress.getByName("239.1.2.3");
portPC1 = 2342;
ipPC3 = InetAddress.getByName("172.20.156.94");
portPC3 = 2343;
pc2_pc1_receiver = new BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver();
pc2_pc1_receiver.resetMcastMessagesToSend();
pc2_pc1_receiver.resetSavedMCASTMessagesList();
pc2_pc1_receiver.setKeepRunning(true); //use this to terminate thread instead of killing it by hard
pc2_pc1_receiver.setNetworkData(mcastIPPC1, portPC1);
pc2_pc1_receiver.start();
pc2_pc3_sender = new BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender();
pc2_pc3_sender.setNetworkSettinigs(ipPC3, portPC3);
pc2_pc3_sender.setKeepRunning(true);
pc2_pc3_receiver = new BRE_KNO_MCC_PC2_PC3_UNICAST_PduReceiver();
pc2_pc3_receiver.setNetworkSettings(2344);
pc2_pc3_receiver.setKeepRunning(true);
while (keepRunningMainThread)
{
List<Pdu> tempSet = pc2_pc1_receiver.getMCASTMessagesToSend();
if (!tempSet.isEmpty())
{
if (!pc2_pc3_sender.isAlive())
{
pc2_pc3_sender.start();
}
pc2_pc3_sender.setListToSend(tempSet);
if (!pc2_pc3_receiver.isAlive())
{
pc2_pc3_receiver.start();
}
}
else
{
try
{
Thread.sleep(2000);
}
catch (InterruptedException ex)
{
Logger.getLogger(BRE_KNO_MCC_PC2_Controller.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
}
package MV3500Cohort2019JulySeptember.projects.BrennenstuhlKnobelochMcCann;
import com.sun.corba.se.impl.orbutil.concurrent.Mutex;
import java.net.*;
import java.io.*;
import edu.nps.moves.dis7.*;
import edu.nps.moves.dis7.enumerations.*;
import edu.nps.moves.dis7.util.*;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
public class BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver extends Thread
{
public static final boolean USE_FAST_ESPDU = false;
static List<Integer> savedMCASTMessages = new ArrayList();
static List<Pdu> mcastMessagesToSend = new ArrayList();
static Mutex mutex = new Mutex();
static boolean keepRunning = false;
static boolean isRunning = false;
PduFactory factory;
MulticastSocket socket;
InetAddress address;
DatagramPacket packet;
public void run()
{
try
{
isRunning = true;
factory = new PduFactory();
while (keepRunning)
{
byte buffer[] = new byte[1500];
packet = new DatagramPacket(buffer, buffer.length);
socket.receive(packet);
Pdu pdu = factory.createPdu(packet.getData());
if (pdu != null && (pdu.getPduType() == DISPDUType.COMMENT))
{
if (!savedMCASTMessages.contains(pdu.getTimestamp()))
{
System.out.println("BRE_KNO_MCC_PC1_MCAST received Massage.");
savedMCASTMessages.add(pdu.getTimestamp());
try
{
mutex.acquire();
System.out.println("PC2 - PC1 received: Internal ID " + pdu.getTimestamp() + " added.");
mcastMessagesToSend.add(pdu);
mutex.release();
System.out.println("Added to SendList and saved in archiv.");
}
catch (InterruptedException ex)
{
Logger.getLogger(BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex);
}
}
else
{
System.out.println("BRE_KNO_MCC_PC1_MCAST received Massage. Is already in list. Nothing added to SendList.");
}
}
else
{
System.out.println("received packet but pdu is null or not a PDU from type COMMENT");
}
}
}
catch (IOException e)
{
System.out.println("Problem with BRE_KNO_MCC_PC1_MCAST_PduReceiver, see exception trace:");
System.out.println(e);
}
finally
{
System.out.println("BRE_KNO_MCC_PC1_MCAST_PduReceiver complete.");
}
isRunning = false;
}
public boolean isRunning()
{
return isRunning;
}
public void setNetworkData(InetAddress addr, int port)
{
try
{
address = addr;
socket = new MulticastSocket(port);
socket.joinGroup(address);
}
catch (IOException ex)
{
Logger.getLogger(BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void setKeepRunning(boolean k)
{
keepRunning = k;
}
public void resetSavedMCASTMessagesList()
{
try
{
mutex.acquire();
savedMCASTMessages.clear();
mutex.release();
}
catch (InterruptedException ex)
{
Logger.getLogger(BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void resetMcastMessagesToSend()
{
try
{
mutex.acquire();
mcastMessagesToSend.clear();
mutex.release();
}
catch (InterruptedException ex)
{
Logger.getLogger(BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex);
}
}
public List<Pdu> getMCASTMessagesToSend()
{
List<Pdu> temp = null;
try
{
mutex.acquire();
temp = new ArrayList(mcastMessagesToSend);
mcastMessagesToSend.clear();
mutex.release();
}
catch (InterruptedException ex)
{
Logger.getLogger(BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex);
}
return temp;
}
}
package MV3500Cohort2019JulySeptember.projects.BrennenstuhlKnobelochMcCann;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class BRE_KNO_MCC_PC2_PC3_UNICAST_PduReceiver extends Thread
{
static boolean keepRunning = false;
static boolean isRunning = false;
static int portPC3;
public void run()
{
isRunning = true;
try (DatagramSocket socket = new DatagramSocket(portPC3))
{
byte[] buffer = new byte[65507];
socket.setSoTimeout(30000);
while (true)
{
DatagramPacket datagramPacket = new DatagramPacket(buffer, 0, buffer.length);
socket.receive(datagramPacket);
String receivedMessage = new String(datagramPacket.getData());
System.out.println(receivedMessage);
}
}
catch (SocketException e)
{
isRunning = false;
e.printStackTrace();
}
catch (IOException e)
{
isRunning = false;
System.out.println("Timeout. Client is closing.");
}
}
public boolean getIsRunning(){
return isRunning;
}
public void setNetworkSettings(int port){
portPC3 = port;
}
public void setKeepRunning(boolean k){
keepRunning = k;
}
}
package MV3500Cohort2019JulySeptember.projects.BrennenstuhlKnobelochMcCann;
import com.sun.corba.se.impl.orbutil.concurrent.Mutex;
import java.util.*;
import edu.nps.moves.dis7.*;
import edu.nps.moves.dis7.enumerations.DISPDUType;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.util.logging.Level;
import java.util.logging.Logger;
public class BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender extends Thread
{
static Mutex mutex = new Mutex();
static List<Pdu> messagesToSend = new ArrayList();
static boolean keepRunning = false;
static boolean isRunning = false;
static InetAddress pc3IP;
static int portPC3;
public void run()
{
try
{
isRunning = true;
DatagramSocket socket = new DatagramSocket(portPC3);
while (keepRunning)
{
try
{
mutex.acquire();
if (!messagesToSend.isEmpty())
{
Pdu tempPdu = messagesToSend.get(0);
messagesToSend.remove(messagesToSend.get(0));
mutex.release();
if (tempPdu.getPduType() != DISPDUType.COMMENT)
{
System.out.println("Received Message Is Not A CommentPDU. Skiped.");
}
else
{
//Sending via UNICAST
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
byte[] buffer;
try
{
tempPdu.marshal(dos);
}
catch (Exception ex)
{
Logger.getLogger(BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender.class.getName()).log(Level.SEVERE, null, ex);
}
buffer = baos.toByteArray();
DatagramPacket packet = new DatagramPacket(buffer, buffer.length, pc3IP, portPC3);
try
{
socket.send(packet);
}
catch (IOException ex)
{
Logger.getLogger(BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
else
{
mutex.release();
}
}
catch (InterruptedException ex)
{
Logger.getLogger(BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
catch (SocketException ex)
{
Logger.getLogger(BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void setNetworkSettinigs(InetAddress address, int port)
{
pc3IP = address;
portPC3 = port;
}
public boolean getIsRunning()
{
return isRunning;
}
public void setKeepRunning(boolean k)
{
keepRunning = k;
}
public void setListToSend(List<Pdu> pduSetToSend)
{
try
{
mutex.acquire();
while (!pduSetToSend.isEmpty())
{
messagesToSend.add(pduSetToSend.get(0));
pduSetToSend.remove(0);
}
mutex.release();
}
catch (InterruptedException ex)
{
Logger.getLogger(BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
package MV3500Cohort2019JulySeptember.projects.BrennenstuhlKnobelochMcCann;
import java.net.*;
import java.io.*;
import edu.nps.moves.dis7.*;
import edu.nps.moves.dis7.util.PduFactory;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
public class BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver
{
static boolean keepRunning = true;
static boolean isRunning = false;
static int portPC3;
static InetAddress ipPC2;
static DatagramSocket socket;
public static void main(String[] args)
{
portPC3 = 2343;
try
{
ipPC2 = InetAddress.getByName("172.20.148.181");
}
catch (UnknownHostException ex)
{
Logger.getLogger(BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex);
}
run();
}
public static void run()
{
isRunning = true;
byte[] buffer = new byte[65507];
try
{
DatagramSocket clientSocket = new DatagramSocket(portPC3);
socket = new DatagramSocket(2344);
while (keepRunning)
{
DatagramPacket datagramPacket = new DatagramPacket(buffer, 0, buffer.length);
try
{
System.out.println("waiting for receiving message...");
clientSocket.receive(datagramPacket);
System.out.println("Message received.");
PduFactory factory = new PduFactory();
Pdu tempPdu = factory.createPdu(datagramPacket.getData());
StringBuilder message = new StringBuilder();
message.append("Pdu type: ");
message.append(tempPdu.getPduType());
message.append(" Internal ID: ");
message.append(tempPdu.getTimestamp());
message.append(" ");
//extract comments
CommentPdu commentPdu = (CommentPdu) tempPdu; // cast to precise type
ArrayList<VariableDatum> payloadList = (ArrayList) commentPdu.getVariableDatums();
for (VariableDatum variableDatum : payloadList)
{
String nextComment = new String(variableDatum.getVariableDatumValue()); // convert byte[] to String
message.append(nextComment);
}
System.out.println(message);
sendAnswerUNICASTtoPC2(tempPdu.getTimestamp());
sendMCASTOver3000(tempPdu);
}
catch (IOException ex)
{
Logger.getLogger(BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
catch (SocketException ex)
{
Logger.getLogger(BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex);
}
}
public boolean isRunning()
{
return isRunning;
}
public void setKeepRunning(boolean k)
{
keepRunning = k;
}
static void sendAnswerUNICASTtoPC2(int internID)
{
//Sending via UNICAST
String message = ("PC3: Packet with InternID " + internID + " received.");
DatagramPacket packet = new DatagramPacket(message.getBytes(), message.length(), ipPC2, 2344);
try
{
socket.send(packet);
}
catch (IOException ex)
{
Logger.getLogger(BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender.class.getName()).log(Level.SEVERE, null, ex);
}
}
static void sendMCASTOver3000(Pdu tempPdu)
{
InetAddress localMulticastAddress = null;
try
{
localMulticastAddress = InetAddress.getByName("239.1.2.3");
}
catch (UnknownHostException ex)
{
Logger.getLogger(BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex);
}
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
byte[] buffer;
try
{
tempPdu.marshal(dos);
}
catch (Exception ex)
{
Logger.getLogger(BRE_KNO_MCC_PC1_MCAST_PduSender.class.getName()).log(Level.SEVERE, null, ex);
}
buffer = baos.toByteArray();
DatagramPacket packet = new DatagramPacket(buffer, buffer.length, localMulticastAddress, 3000);
MulticastSocket socket;
try
{
socket = new MulticastSocket(3000);
socket.joinGroup(localMulticastAddress);
socket.send(packet);
}
catch (IOException ex)
{
Logger.getLogger(BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex);
}
try
{
Thread.sleep(100L);
}
catch (InterruptedException ex)
{
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment