Skip to content
Snippets Groups Projects
Commit 15295d6a authored by garrettloeffelman's avatar garrettloeffelman
Browse files

Merge origin/master

parents 1367e876 237d8834
No related branches found
No related tags found
No related merge requests found
Showing
with 352 additions and 85 deletions
......@@ -43,4 +43,6 @@
/projects/UdpExample1/UdpReceiver/build/
/CourseExamples/nbproject/private/
/CourseExamples/build/
/CourseExamples/src/DisExamples/specifications
/specifications/*.SAVEME
/specifications/*.pdf
/specifications/SISO-REF-010-v24
<?xml version="1.0" encoding="UTF-8"?>
<project name="DIS Utilities" default="" basedir=".">
<target name="all" depends="clean.specifications,download.IeeeDisStandards,download.SISO"/>
<target name="clean.specifications">
<echo message="ensure all files are closed before deleting..."/>
<delete dir="specifications"/>
</target>
<!-- =============================================== -->
<property name="ieeeBaseUrl" value="https://ieeexplore.ieee.org/document/"/>
<target name="download.IeeeDisStandards">
<mkdir dir="specifications"/>
<property name="DIS.1" value="IEEE1278.1-2012.DistributedInteractiveSimulation.ApplicationProtocols.6387564.pdf"/>
<echo message="get ${DIS.1}"/>
<get src="${ieeeBaseUrl}/6387564"
dest="specifications/${DIS.1}" verbose="true"/>
<property name="DIS.2" value="IEEE1278.2-2015.DistributedInteractiveSimulation.CommunicationsServices.7459689.pdf"/>
<echo message="get ${DIS.2}"/>
<get src="${ieeeBaseUrl}/7459689"
dest="specifications/${DIS.2}" verbose="true"/>
<property name="DIS.3" value="IEEE1278.3-2003.DistributedInteractiveSimulation.ExerciseManagement.587529.pdf"/>
<echo message="get ${DIS.3}"/>
<get src="${ieeeBaseUrl}/587529"
dest="specifications/${DIS.3}" verbose="true"/>
<property name="DIS.4" value="IEEE1278.4-2013.DistributedInteractiveSimulation.VV+A.6595010.pdf"/>
<echo message="get ${DIS.4}"/>
<get src="${ieeeBaseUrl}/6595010"
dest="specifications/${DIS.4}" verbose="true"/>
</target>
<!-- =============================================== -->
<property name="sisoBaseUrl" value="https://www.sisostds.org/DigitalLibrary.aspx?Command=Core_Download&amp;EntryId="/>
<target name="download.SISO">
<mkdir dir="specifications"/>
<property name="SISO-REF-010" value="SISO-REF-010-v24.zip"/>
<echo message="get ${SISO-REF-010}"/>
<get src="${sisoBaseUrl}46171"
dest="specifications/${SISO-REF-010}" verbose="true"/>
<unzip src="specifications/${SISO-REF-010}"
dest="specifications/" overwrite="true"/>
<delete file="specifications/${SISO-REF-010}"/>
<property name="SISO-REF-010.1" value="SISO-REF-010.1-2018 Operations Manual for EWG V07.pdf"/>
<echo message="get ${SISO-REF-010.1}"/>
<get src="${sisoBaseUrl}46173"
dest="specifications/${SISO-REF-010.1}" verbose="true"/>
</target>
</project>
File deleted
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package MV3500Cohort2018JulySeptember.homework3.Cain_Thomerson_Homework3;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
/**
*
* @author danielcain with credit to CDR Angelopolis
*/
public class CainThomersonHw3Receiver {
public static final String MULTICAST_ADDRESS = "239.1.2.15";
public static final int DESTINATION_PORT = 1717;
/** How many routers can be crossed */
public static final int TTL = 10;
public static void main(String[] args)
{
try
{
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("help! Ninjas took the keg!");
System.out.println("the keg was spotted at coordinates (x: " + firstNumber + ", y: " + secondNumber +", z: " + thirdNumber + " )");
}
if (type == 'B') {
int lngth = dis.readInt();
String informationLine = "the customer says: ";
for(int i=0; i<lngth; i++) {
informationLine += dis.readChar();
}
System.out.println(informationLine);
}
}
}
catch(Exception e)
{
System.out.println(e);
}
}
}
package MV3500Cohort2018JulySeptember.homework3.Cain_Thomerson_Homework3;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
import java.util.Random;
/**
*
* @author danielcain with credit to CDR Angelopolis
*/
public class CainThomersonHw3Sender {
public static final String MULTICAST_ADDRESS = "239.1.2.15";
public static final int DESTINATION_PORT = 1717;
/** How many routers can be crossed */
public static final int TTL = 10;
public static void main(String[] args)
{
try
{
System.setProperty("java.net.preferIPv4Stack", "true");
MulticastSocket multicastSocket = new MulticastSocket(1718);
multicastSocket.setTimeToLive(TTL);
InetAddress multicastAddress = InetAddress.getByName(MULTICAST_ADDRESS);
System.out.println(multicastAddress);
// Join group useful on receiving side
System.out.println(multicastAddress);
// Join group useful on receiving side
multicastSocket.joinGroup(multicastAddress);
// You can join multiple groups here
// Put together a message with binary content. "ByteArrayOutputStream"
// is a java.io utility that lets us put together an array of binary
// data, which we put into the UDP packet.
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(byteOut);
Random rand = new Random();
Random rndFLT = new Random();
for(int idx = 1; idx <+ 100; idx++){
float flt = rndFLT.nextFloat();
if (flt <=.5){
dos.writeChars("A");
dos.writeFloat(rand.nextFloat()*100);
dos.writeFloat(rand.nextFloat()*100);
dos.writeFloat(rand.nextFloat()*100);
}
else if (flt < .8 ) {
dos.writeChars("B");
dos.writeInt("Information Bravo.".length());
dos.writeChars("study for networks");
}
else {
dos.writeChars("B");
dos.writeInt("Information Charlie.".length());
dos.writeChars("Drink beer and chill.");
}
byte[] buffer = byteOut.toByteArray();
// Put together a packet to send
// muticast group we are sending to--not a single host
DatagramPacket packet = new DatagramPacket(buffer, buffer.length, multicastAddress, DESTINATION_PORT);
// How fast does this go? Does UDP try to slow it down, or does
// this cause network problems? (hint: yes for an unlimited send
// rate, unlike TCP). How do you know on the receiving side
// that you haven't received a duplicate UDP packet, out of
// order packet, or dropped packet?
multicastSocket.send(packet);
byteOut.reset();
Thread.sleep(1000); // Send 100, one per second
System.out.println("Sent multicast packet " + idx + " of 100");
}
}
catch(Exception e)
{
System.out.println(e);
}
}
}
No preview for this file type
<?xml version="1.0" encoding="UTF-8"?>
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group name="MV3500 networking open-dis">
<file>file:/E:/x-nps-gitlab/NetworkedGraphicsMV3500/projects/TcpExample4/TcpClient/TcpClient/src/tcpclient/TcpClient.java</file>
</group>
</open-files>
</project-private>
<?xml version="1.0" encoding="UTF-8"?>
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group name="MV3500 networking open-dis">
<file>file:/E:/x-nps-gitlab/NetworkedGraphicsMV3500/projects/TcpExample4/TcpClient/TcpClient/src/tcpclient/TcpClient.java</file>
</group>
</open-files>
</project-private>
<?xml version="1.0" encoding="UTF-8"?>
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group>
<file>file:/Users/mcgredo/projects/gitlab/NetworkedGraphicsMV3500/projects/TcpExample4/TcpThreadServer/TcpThreadServer/src/tcpthreadserver/TcpThreadServer.java</file>
<file>file:/Users/mcgredo/projects/gitlab/NetworkedGraphicsMV3500/projects/TcpExample4/TcpThreadServer/TcpThreadServer/src/tcpthreadserver/HandlerThread.java</file>
</group>
<group name="MV3500 networking open-dis">
<file>file:/E:/x-nps-gitlab/NetworkedGraphicsMV3500/projects/TcpExample4/TcpThreadServer/TcpThreadServer/src/tcpthreadserver/HandlerThread.java</file>
<file>file:/E:/x-nps-gitlab/NetworkedGraphicsMV3500/projects/TcpExample4/TcpThreadServer/TcpThreadServer/src/tcpthreadserver/TcpThreadServer.java</file>
</group>
</open-files>
</project-private>
<?xml version="1.0" encoding="UTF-8"?>
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group>
<file>file:/Users/mcgredo/projects/gitlab/NetworkedGraphicsMV3500/projects/TcpExample4/TcpThreadServer/TcpThreadServer/src/tcpthreadserver/TcpThreadServer.java</file>
<file>file:/Users/mcgredo/projects/gitlab/NetworkedGraphicsMV3500/projects/TcpExample4/TcpThreadServer/TcpThreadServer/src/tcpthreadserver/HandlerThread.java</file>
</group>
<group name="MV3500 networking open-dis">
<file>file:/E:/x-nps-gitlab/NetworkedGraphicsMV3500/projects/TcpExample4/TcpThreadServer/TcpThreadServer/src/tcpthreadserver/HandlerThread.java</file>
<file>file:/E:/x-nps-gitlab/NetworkedGraphicsMV3500/projects/TcpExample4/TcpThreadServer/TcpThreadServer/src/tcpthreadserver/TcpThreadServer.java</file>
</group>
</open-files>
</project-private>
No preview for this file type
# IEEE Distributed Interactive Simulation (DIS) Protocol
*Distributed Interactive Simulation (DIS) is an IEEE standard for conducting
real-time platform-level wargaming across multiple host computers and is used worldwide,
especially by military organizations but also by other agencies such as those involved in
space exploration and medicine.*
* Wikipedia: [Distributed Interactive Simulation](https://en.wikipedia.org/wiki/Distributed_Interactive_Simulation)
## Standards Documents
An IEEEExplore account is required to access or purchase these standards documents.
NPS personnel can obtain the following standards without charge when accessing via nps.edu networks.
**1278.1-2012. IEEE Standard for Distributed Interactive Simulation (DIS) - Application Protocols**
* https://ieeexplore.ieee.org/document/6387564
* *Abstract.*
Data messages, known as Protocol Data Units (PDUs), that are exchanged on a network among simulation applications are defined. These PDUs are for interactions that take place within specified domains called protocol families, which include Entity Information/ Interaction, Warfare, Logistics, Simulation Management, Distributed Emission Regeneration, Radio Communications, Entity Management, Minefield, Synthetic Environment, Simulation Management with Reliability, Information Operations, Live Entity Information/Interaction, and Non-Real-Time protocol.
* Date of Publication: 19 Dec. 2012
* Electronic ISBN: 978-0-7381-7310-8
* Also [IEEE Std 1278.1-2012 (Revision of IEEE Std 1278.1-1995)](https://standards.ieee.org/findstds/standard/1278.1-2012.html)
---
**1278.2-2015. IEEE Standard for Distributed Interactive Simulation (DIS) - Communication Services and Profiles**
* https://ieeexplore.ieee.org/document/7459689
* *Abstract.*
Communication services to support information exchange between simulation applications participating in the distributed interactive simulation (DIS) environment are defined. These communication services describe a connectionless information transfer that supports real-time, as well as non-real-time, exchange. Several communication profiles specifying communication services are provided.
* *Scope.*
This standard establishes the requirements for the communication services to be used in a DIS simulation. This standard supports IEEE Std 1278.1.
* *Purpose.*
The purpose of this standard is to establish requirements for communication subsystems that support DIS applications. This standard provides service requirements and associated profiles that can be individually selected to meet specific DIS system operational requirements.
* Date of Publication: 6 Nov. 2015
* Electronic ISBN: 978-0-7381-9909-2
---
**1278.3-1996. IEEE Recommended Practice for Distributed Interactive Simulation - Exercise Management and Feedback**
* https://ieeexplore.ieee.org/document/587529
* *Abstract.*
Guidelines are established for exercise management and feedback in distributed interactive simulation (DIS) exercises. Guidance is provided to sponsors, providers and supporters of DIS-compliant systems and exercises as well as to developers of DIS exercise management and feedback stations. The activities of the organizations involved in a DIS exercise and the top-level processes used to accomplish those activities are addressed. The functional requirements of the exercise management and feedback process are also addressed. This standard is one of a series of standards developed for DIS to assure interoperability between dissimilar simulations for currently installed and future simulations developed by different organizations.
* Date of Publication 1997, Reaffirmed 2002.
---
**4. 1278.4-1997. IEEE Recommended Practice for Distributed Interactive Simulation - Verification, Validation, and Accreditation**
* https://ieeexplore.ieee.org/document/6595010
* *Abstract.*
Guidelines are established for the verification, validation, and accreditation (VV&A) of distributed interactive simulation (DIS) exercises. How-to procedures for planning and conducting DIS exercise VV&A are provided. Intended for use in conjunction with IEEE Std 1278.3-1996, this recommended practice presents data flow and connectivity for all proposed verification and validation activities and provides rationale and justification for each step. VV&A guidance is provided to exercise users/sponsors and developers.
* Date of Publication: 10 Sept. 2013
* Electronic ISBN: 978-0-7381-6281-2
---
**5. SISO-REF-010-2017: Reference for Enumerations for Simulation Interoperability**
* https://www.sisostds.org/ProductsPublications/ReferenceDocuments.aspx
* *Abstract.*
SISO-REF-010 specifies numerical values and associated definitions for fields that are identified as enumerations in SISO Standards Products and SISO-sponsored standards published by IEEE for High Level Architecture (HLA) and Distributed Interactive Simulation (DIS). Enumerations for simulations may be applied in other architectures, such as the Test and Training Enabling Architecture (TENA).
## Working Groups
**DIS/RPR FOM Product Support Group**
* "The Distributed Interactive Simulation / Real-time Platform Reference Federation Object Model (DIS / RPR FOM) Product Support Group (PSG) is a permanent support group chartered by the SISO Standards Activity Committee to support multiple DIS-related products."
* https://www.sisostds.org/StandardsActivities/SupportGroups/DISRPRFOMPSG.aspx
* [SISO Digital Library](https://www.sisostds.org/Default.aspx?tabid=105&EntryId=31596) including DIS RPRFOM Product Support Group (PSG),
** [DIS Introduction and Briefings](https://www.sisostds.org/Default.aspx?tabid=105&EntryId=31596)
** [IEEE 1278 Bibliography Material](https://www.sisostds.org/Default.aspx?tabid=105&EntryId=31596)
<?xml version="1.0" encoding="UTF-8"?>
<project name="DIS Utilities" default="" basedir=".">
<target name="all" depends="clean.specifications,download.IeeeDisStandards,download.SISO"/>
<target name="clean.specifications">
<echo message="ensure all files are closed before deleting..."/>
<delete verbose="true" failonerror="false">
<fileset dir="." includes="**/*.pdf.SAVEME"/>
<fileset dir="." includes="**/*.pdf"/>
<fileset dir="." includes="**/*.doc"/>
<fileset dir="SISO-REF-010-v24"/>
<fileset dir="." includes="SISO-REF-010-v24/*"/>
</delete>
</target>
<!-- =============================================== -->
<target name="download.IeeeDisStandards">
<echo message="Warning: due to cookie restrictions, you must download IEEE specifications manually via links on README.DIS.md"/>
<property name="ieeeBasePageUrl" value="https://ieeexplore.ieee.org/document/"/>
<property name="ieeeBaseLinkUrl" value="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;arnumber="/>
<!-- ======================== -->
<property name="DIS.1.document" value="6387564"/>
<property name="DIS.1.rename" value="IEEE1278.1-2012.DistributedInteractiveSimulation.ApplicationProtocols.${DIS.1.document}.pdf.SAVEME"/>
<echo message="see ${ieeeBasePageUrl}${DIS.1.document}"/>
<echo message="get ${ieeeBaseLinkUrl}${DIS.1.document}"/>
<echo message="as ${DIS.1.rename}"/>
<!--
<get src="${ieeeBaseLinkUrl}${DIS.1.document}"
dest="${DIS.1.rename}" verbose="true"/> -->
<echo message="IEEE1278.1 retrieval: save ${ieeeBaseLinkUrl}${DIS.1.document} to this location"
file="${DIS.1.rename}"/>
<!-- ======================== -->
<property name="DIS.2.document" value="7459689"/>
<property name="DIS.2.rename" value="IEEE1278.2-2015.DistributedInteractiveSimulation.CommunicationsServices.${DIS.2.document}.pdf.SAVEME"/>
<echo message="see ${ieeeBasePageUrl}${DIS.2.document}"/>
<echo message="get ${ieeeBaseLinkUrl}${DIS.2.document}"/>
<echo message="as ${DIS.2.rename}"/>
<!--
<get src="${ieeeBaseLinkUrl}${DIS.2.document}"
dest="${DIS.2.rename}" verbose="true"/> -->
<echo message="IEEE1278.2 retrieval: save ${ieeeBaseLinkUrl}${DIS.2.document} to this location"
file="${DIS.2.rename}"/>
<!-- ======================== -->
<property name="DIS.3.document" value="7459689"/>
<property name="DIS.3.rename" value="IEEE1278.3-2015.DistributedInteractiveSimulation.CommunicationsServices.${DIS.3.document}.pdf.SAVEME"/>
<echo message="see ${ieeeBasePageUrl}${DIS.3.document}"/>
<echo message="get ${ieeeBaseLinkUrl}${DIS.3.document}"/>
<echo message="as ${DIS.3.rename}"/>
<!--
<get src="${ieeeBaseLinkUrl}${DIS.3.document}"
dest="${DIS.3.rename}" verbose="true"/> -->
<echo message="IEEE1278.3 retrieval: save ${ieeeBaseLinkUrl}${DIS.3.document} to this location"
file="${DIS.3.rename}"/>
<!-- ======================== -->
<property name="DIS.4.document" value="7459689"/>
<property name="DIS.4.rename" value="IEEE1278.4-2013.DistributedInteractiveSimulation.VV+A.${DIS.4.document}.pdf.SAVEME"/>
<echo message="see ${ieeeBasePageUrl}${DIS.4.document}"/>
<echo message="get ${ieeeBaseLinkUrl}${DIS.4.document}"/>
<echo message="as ${DIS.4.rename}"/>
<!--
<get src="${ieeeBaseLinkUrl}${DIS.4.document}"
dest="${DIS.4.rename}" verbose="true"/> -->
<echo message="IEEE1278.4 retrieval: save ${ieeeBaseLinkUrl}${DIS.4.document} to this location"
file="${DIS.4.rename}"/>
</target>
<!-- =============================================== -->
<property name="sisoBaseUrl" value="https://www.sisostds.org/DigitalLibrary.aspx?Command=Core_Download&amp;EntryId="/>
<target name="download.SISO">
<property name="SISO-REF-010" value="SISO-REF-010-v24.zip"/>
<echo message="get ${SISO-REF-010}"/>
<get src="${sisoBaseUrl}46171"
dest="${SISO-REF-010}" verbose="true"/>
<unzip src="${SISO-REF-010}"
dest="" overwrite="true"/>
<delete file="${SISO-REF-010}"/>
<property name="SISO-REF-010.1" value="SISO-REF-010.1-2018 Operations Manual for EWG V07.pdf"/>
<echo message="get ${SISO-REF-010.1}"/>
<get src="${sisoBaseUrl}46173"
dest="${SISO-REF-010.1}" verbose="true"/>
</target>
</project>
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