Skip to content
Snippets Groups Projects
Commit 45c1e174 authored by thomascecil's avatar thomascecil
Browse files

Merge origin/master

parents e6aa054e e32d5582
No related branches found
No related tags found
No related merge requests found
Showing
with 484 additions and 12 deletions
<?xml version="1.0" encoding="UTF-8"?>
<!-- You may freely edit this file. See commented blocks below for -->
<!-- some examples of how to customize the build. -->
<!-- (If you delete it and reopen the project it will be recreated.) -->
<!-- By default, only the Clean and Build commands use this build script. -->
<!-- Commands such as Run, Debug, and Test only use this build script if -->
<!-- the Compile on Save feature is turned off for the project. -->
<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
<!-- in the project's Project Properties dialog box.-->
<!--
Copyright (c) 1995-2023 held by the author(s). All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the names of the Naval Postgraduate School (NPS)
Modeling Virtual Environments and Simulation (MOVES) Institute
(https://www.nps.edu and https://www.MovesInstitute.org)
nor the names of its contributors may be used to endorse or
promote products derived from this software without specific
prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
-->
<project name="MV3500 assignments" default="default" basedir=".">
<description>Builds, tests, and runs the MV3500 project assignments by student cohorts</description>
<import file="nbproject/build-impl.xml"/>
......@@ -70,6 +103,9 @@
nbproject/build-impl.xml file.
-->
<target name="all" depends="jar,javadoc" description="fully build this project">
<echo message="build all assignments complete"/>
</target>
<target name="view.assignments.javadoc.local" depends="javadoc"
description="view local MV3500 assignments javadoc in web browser (via Netbeans only)">
......
/**
* Final project assignments supporting the NPS MOVES MV3500 Networked Graphics course.
*
* @see <a href="https://gitlab.nps.edu/Savage/NetworkedGraphicsMV3500/-/tree/master/assignments">networkedGraphicsMV3500 assignments</a>
* @see java.lang.Package
* @see <a href="https://stackoverflow.com/questions/22095487/why-is-package-info-java-useful">StackOverflow: why-is-package-info-java-useful</a>
* @see <a href="https://stackoverflow.com/questions/624422/how-do-i-document-packages-in-java">StackOverflow: how-do-i-document-packages-in-java</a>
*/
package MV3500Cohort2021JulySeptember.homework3;
/**
* Final project assignments supporting the NPS MOVES MV3500 Networked Graphics course.
*
* @see <a href="https://gitlab.nps.edu/Savage/NetworkedGraphicsMV3500/-/tree/master/assignments">networkedGraphicsMV3500 assignments</a>
* @see java.lang.Package
* @see <a href="https://stackoverflow.com/questions/22095487/why-is-package-info-java-useful">StackOverflow: why-is-package-info-java-useful</a>
* @see <a href="https://stackoverflow.com/questions/624422/how-do-i-document-packages-in-java">StackOverflow: how-do-i-document-packages-in-java</a>
*/
package MV3500Cohort2021JulySeptember.homework4;
......@@ -2,9 +2,10 @@ package MV3500Cohort2023MarchJune.homework1.Chojnacki;
import java.io.*;
import java.net.*;
import java.text.SimpleDateFormat;
import java.util.Calendar;
/**
* Testing
* This is Assignment 1 where I have modified the given code from TCPExample3Client
* -sleep time has been extended to give more time in between loops
* -Initial print line has been altered to reflect assignment 1
......@@ -72,7 +73,8 @@ public class Assignment1Client
System.out.println("======================Assignment1===========================");
System.out.print ("Client loop " + clientLoopCount + ": ");
System.out.println("We are connected to the server!");
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());
System.out.println("The current system time is " + timeStamp + "!");
System.out.println("The message the server sent was: '" + serverMessage + "'");
// socket gets closed, either automatically/silently by this code (or possibly by the server)
......
package MV3500Cohort2023MarchJune.Fredrickson;
import java.io.*;
import java.net.*;
/**
* This is Assignment 1 where I have modified the given code from TCPExample3Client
* -sleep time has been extended to give more time in between loops
* -Initial print line has been altered to reflect assignment 1
* -Loop only runs a finite number of times ,10.
* Before, we always used telnet (netcat) to connect to the server. Here we are
* now writing our own program to do the connection.
*
* As you will see, when we run this after we start the server we will see the
* same string telnet printed, sent by the server. The output at the server will
* show different socket pairs for each time the loop iterates.
*
* (JOHN FREDRICKSON) I have made the following changes to this code:
* -Changed client message
* -Loop 100 times
* -Shortened time delay
*
* @author mcgredo
* @author brutzman@nps.edu
*/
public class FredricksonAssignment1Client
{
/** Default constructor */
public FredricksonAssignment1Client()
{
// default constructor
}
/** IPv6 String constant for localhost address, similarly IPv4 127.0.0.1
* @see <a href="https://en.wikipedia.org/wiki/localhost">https://en.wikipedia.org/wiki/localhost</a>
* @see <a href="https://en.wikipedia.org/wiki/IPv6_address">https://en.wikipedia.org/wiki/IPv6_address</a>
*/
public final static String LOCALHOST = "0:0:0:0:0:0:0:1";
/**
* Program invocation, execution starts here
* @param args command-line arguments
*/
public static void main(String[] args)
{
// Local variables/fields
Socket socket = null;
InputStream is;
Reader isr;
BufferedReader br;
String serverMessage;
int clientLoopCount = 0;
int numberOfLoops = 100;
try {
System.out.println("====================== Assignment1 - Fredrickson ===========================");
while (clientLoopCount < numberOfLoops)
{
clientLoopCount++; // increment at beginning of loop for reliability
System.out.println(FredricksonAssignment1Client.class.getName() + " creating socket...");
// We request an IP to connect to ("localhost") and
// port number at that IP (2317). This establishes
// a connection to that IP in the form of a Socket
// object; the server uses a ServerSocket to wait for
// connections.
socket = new Socket(LOCALHOST, 2317); // locohost?
// Now hook everything up (i.e. set up the streams), Java style:
is = socket.getInputStream();
isr = new InputStreamReader(is);
br = new BufferedReader(isr);
// Read a single line written by the server. We'd
// do things a bit differently if there were many lines to be read
// from the server instead of one only.
serverMessage = br.readLine();
System.out.print ("Client loop " + clientLoopCount + ": ");
System.out.println("now we're talking!");
System.out.println("The message the server sent was: '" + serverMessage + "'");
System.out.println();
// socket gets closed, either automatically/silently by this code (or possibly by the server)
Thread.sleep(200l); // slow things down, for example 500l (long) = 500 msec
} // end while(true) // infinite loops are dangerous, be sure to kill this process!
}
catch (IOException | InterruptedException e)
{
// System.err.println("Problem with " + TcpExample3Client.class.getName() + " networking:"); // describe what is happening
System.err.println("Error: " + e);
// Provide more helpful information to user if exception occurs due to running twice at one time
if (e instanceof java.net.BindException) {
System.err.println("*** Be sure to stop any other running instances of programs using this port!");
}
}
finally // occurs after any other activity when shutting down
{
try {
if (socket != null)
socket.close();
} catch (IOException e) {}
// program exit: tell somebody about that happening. Likely cause: server drops connection.
System.out.println();
// System.out.println(TcpExample3Client.class.getName() + " exit");
}
}
}
package MV3500Cohort2023MarchJune.Fredrickson;
import java.io.*;
import java.net.*;
/**
* This is Assignment 1 where I have modified the given code from TCPExample3Server
*-server response message changed
*
* Very slightly more complex than example1, further modifying example2. The
* only thing this does differently is introduce a loop into the response, so
* you don't have to restart the program after one response. Also, it prints out
* the socket pair the server sees. Run the program via telnet several times and
* compare the socket pairs.
*
* telnet (nc) localhost 2317
*
* If you're sophisticated you can contact the instructor's computer while
* running this program.
*
* telnet (nc) [ipNumberOfServerLaptop] 2317
*
* and have the instructor display the socket pairs received.
*
* (JOHN FREDRICKSON) I have made the following changes to this code:
* -changed server message
*
* @author mcgredo
* @author brutzman@nps.edu
*/
public class FredricksonAssignment1Server
{
/** Default constructor */
public FredricksonAssignment1Server()
{
// default constructor
}
/**
* Program invocation, execution starts here
* If already compiled, can run using console in directory ../../build/classes/ by invoking \
* java -classpath . TcpExamples.TcpExample3Server
* @param args command-line arguments
*/
public static void main(String[] args) {
try {
// ServerSocket waits for a connection from a client.
// Notice that it is outside the loop; ServerSocket
// needs to be made only once.
System.out.println(FredricksonAssignment1Server.class.getName() + " has started..."); // it helps debugging to put this on console first
ServerSocket serverSocket = new ServerSocket(2317);
OutputStream os;
PrintStream ps;
InetAddress localAddress, remoteAddress;
int localPort, remotePort;
int serverLoopCount = 0;
// Server is up and waiting (i.e. "blocked" or paused)
// Loop, infinitely, waiting for client connections.
// Stop the program somewhere else.
while (true) {
// block until connected to a client
try (Socket clientConnectionSocket = serverSocket.accept())
{
serverLoopCount++; // increment at beginning of loop for reliability
// Now hook everything up (i.e. set up the streams), Java style:
os = clientConnectionSocket.getOutputStream();
ps = new PrintStream(os);
ps.println("This is response " + serverLoopCount + " produced by the server, "
+ FredricksonAssignment1Server.class.getName()); // this gets sent back to client!
// Print some information locally about the Socket connection.
// This includes the port and IP numbers on both sides (the socket pair).
localAddress = clientConnectionSocket.getLocalAddress();
remoteAddress = clientConnectionSocket.getInetAddress();
localPort = clientConnectionSocket.getLocalPort();
remotePort = clientConnectionSocket.getPort();
System.out.print ("Server loop " + serverLoopCount + ": ");
// My socket pair connection looks like this, to localhost:
// Socket pair: (( /0:0:0:0:0:0:0:1, 2317 ), ( /0:0:0:0:0:0:0:1, 54876 ))
// Socket pair: (( /0:0:0:0:0:0:0:1, 2317 ), ( /0:0:0:0:0:0:0:1, 54881 ))
// Why is the first IP/port the same, while the second set has different ports?
// System.out.println(TcpExample3Server.class.getName() + " socket pair showing host name, address, port:");
System.out.println(" (( " +
localAddress.getHostName() + "=" + localAddress.getHostAddress() + ", " + localPort + " ), ( " +
remoteAddress.getHostName() + "=" + remoteAddress.getHostAddress() + ", " + remotePort + " ))");
if ( localAddress.getHostName().equals( localAddress.getHostAddress()) ||
remoteAddress.getHostName().equals(remoteAddress.getHostAddress()))
System.out.println(" note HostName matches address if host has no DNS name");
System.out.println();
// Notice the use of flush() and try w/ resources. Without
// the try w/ resources the Socket object may stay open for
// a while after the client has stopped needing this
// connection. try w/ resources explicitly ends the connection.
ps.flush();
// like it or not, you're outta here!
}
}
} catch (IOException e) {
// System.err.println("Problem with " + TcpExample3Server.class.getName() + " networking: " + e);
// Provide more helpful information to user if exception occurs due to running twice at one time
if (e instanceof java.net.BindException) {
System.err.println("*** Be sure to stop any other running instances of programs using this port!");
}
}
}
}
## Homework 1: Unicast Networking
Welcome everybody! This is where your homework goes.
Deliverables:
* Update unicast sockets sender/receiver, modifying provided code, test via telnet.
* Demonstrate ability to build, run and document Java programs that perform networking tasks.
Please see the [README.md](../../../README.md) in the parent
[assignments](../../../../assignments) directory for detailed instructions.
/**
* TCP Unicast homework assignments supporting the NPS MOVES MV3500 Networked Graphics course.
*
* @see <a href="https://gitlab.nps.edu/Savage/NetworkedGraphicsMV3500/-/tree/master/assignments">networkedGraphicsMV3500 assignments</a>
* @see java.lang.Package
* @see <a href="https://stackoverflow.com/questions/22095487/why-is-package-info-java-useful">StackOverflow: why-is-package-info-java-useful</a>
* @see <a href="https://stackoverflow.com/questions/624422/how-do-i-document-packages-in-java">StackOverflow: how-do-i-document-packages-in-java</a>
*/
package MV3500Cohort2023MarchJune.homework1;
## Homework 2: Client/Server Networking
Deliverables:
* Modifying provided code for a multicast sockets sender/receiver.
* Demonstrate proficiency to build, run and document software that performs networking tasks.
Approach:
0. Think of a simple challenge/response protocol that you wish to portray.
1. Apply your own customized version of Assignment 2 showing both Server and Client programs.
1. Challenge/response scenarios
2. IPv4 versus IPv6
3. Joke telling and riddles?
4. [Message of the Day (MOTD)](https://en.wikipedia.org/wiki/Motd_(Unix))
5. Variations on a theme, protocol handshaking
6. Connecting two different hosts - chat
7. Something for your thesis!
2. Include comments describing your modifications (aka Documentation).
3. Include repeatable documentation of one or more sessions, including operation.
4. Create a simple illustration of the communications exchange in a [UML Sequence Diagram](https://en.wikipedia.org/wiki/Sequence_diagram).
Please see the [README.md](../../../README.md) in the parent
[assignments](../../../../assignments) directory for detailed instructions.
\ No newline at end of file
/**
* TCP Unicast homework assignments supporting the NPS MOVES MV3500 Networked Graphics course.
*
* @see <a href="https://gitlab.nps.edu/Savage/NetworkedGraphicsMV3500/-/tree/master/assignments">networkedGraphicsMV3500 assignments</a>
* @see java.lang.Package
* @see <a href="https://stackoverflow.com/questions/22095487/why-is-package-info-java-useful">StackOverflow: why-is-package-info-java-useful</a>
* @see <a href="https://stackoverflow.com/questions/624422/how-do-i-document-packages-in-java">StackOverflow: how-do-i-document-packages-in-java</a>
*/
package MV3500Cohort2023MarchJune.homework2;
## Homework 3: Example Simulation Recording OpenDIS Network Streams
### Assignment
* Adapt the functionality for [OpenDIS ExampleSimulationProgram](../../../../examples/src/OpenDis7Examples/ExampleSimulationProgram.java), modifying provided code
* Result streams are recorded/saved/replayed using [PduRecorder](https://savage.nps.edu/opendis7-java/javadoc/edu/nps/moves/dis7/utilities/stream/PduRecorder.html), [Wireshark](https://www.wireshark.org) or [X3D-Edit](https://savage.nps.edu/X3D-Edit).
This assignment presents a Problem Prototyping opportunity.
While some minimal functionality is expected, the general outline of
a networking problem and proposed solution holds great interest.
Think of it as a warmup preparation for your final project.
This is also a freeplay opportunity.
You have the option to pick one or more of the provided course example programs
and adapt the source to demonstrate a new client-server handshake protocol of interest.
Be sure to provide a rationale that justifies why the networking choices you made
(TCP/UDP, unicast/multicast, etc.) are the best for the problem you are addressing.
Refer to [homework2 README](../homework2/README.md) and [assignments README](../../../README.md)
for further details on what specific deliverables are expected in each homework assignment.
Team efforts are encouraged, though if you choose a team approach be sure to justify why.
This is a good warmup prior to final projects. Have fun with Java networking!
### Prior Assignment, August 2019
In 2019, students worked together on a single project to check wireless multicast connectivity recently deployed on NPS campus.
See their experimental results in the [NPS Multicast Connectivity Report](../../MV3500Cohort2019JulySeptember/homework3).
/**
* Final project assignments supporting the NPS MOVES MV3500 Networked Graphics course.
*
* @see <a href="https://gitlab.nps.edu/Savage/NetworkedGraphicsMV3500/-/tree/master/assignments">networkedGraphicsMV3500 assignments</a>
* @see java.lang.Package
* @see <a href="https://stackoverflow.com/questions/22095487/why-is-package-info-java-useful">StackOverflow: why-is-package-info-java-useful</a>
* @see <a href="https://stackoverflow.com/questions/624422/how-do-i-document-packages-in-java">StackOverflow: how-do-i-document-packages-in-java</a>
*/
package MV3500Cohort2023MarchJune.homework3;
## Revised Homework 4: DIS Specification Review and Feedback
Deliverables:
* read descriptions for each PDU family and type
* consider which hold potential use for your thesis and your warfare community
* consider whether any message types of interest might be missing
A form is being prepared to facilitate collection of responses.
## (prior) Homework 4: DIS Behavior Modeling
Deliverables:
* Write a DIS program that has a simple but meaningful behavior.
* Include DIS enumerations for specific player platforms of interest.
* Document the behavior and save the stream for possible future use.
Please see the [README.md](../../../README.md) in the parent
[assignments](../../../../assignments) directory for detailed instructions.
/**
* Final project assignments supporting the NPS MOVES MV3500 Networked Graphics course.
*
* @see <a href="https://gitlab.nps.edu/Savage/NetworkedGraphicsMV3500/-/tree/master/assignments">networkedGraphicsMV3500 assignments</a>
* @see java.lang.Package
* @see <a href="https://stackoverflow.com/questions/22095487/why-is-package-info-java-useful">StackOverflow: why-is-package-info-java-useful</a>
* @see <a href="https://stackoverflow.com/questions/624422/how-do-i-document-packages-in-java">StackOverflow: how-do-i-document-packages-in-java</a>
*/
package MV3500Cohort2023MarchJune.homework4;
## Final Projects Summary
Multiple outstanding projects across a range of theory and practice were delivered by this year's cohort.
* Programming projects are providing positive benefit to applied research and future course work.
* Point-paper projects are providing positive benefit to NPS...Next strategic efforts.
Congratulations to all students on superlative work produced during our most network-challenged conditions yet.
## Final Course Project Assignments 2021JulySeptember
Create a dedicated subdirectory for each individual or team project.
Example: `SmithJones`
See the [course syllabus](../../../../MV3500NetworkedGraphicsSyllabus2021JulySeptember.pdf) for details on how to document your project.
Typical final project deliverables:
* `README.MyProject.md` providing a basic description of goals, running the project, files, etc.
* Source code, screen shots, console text log, and any other assets
* Simple flowchart, simple event sequence diagram
* DIS packet capture (text or XML, plus Wireshark pcap)
* Powerpoint presentation, video capture of class section in Teams
These deliverables have excellent value going forward, hopefully benefiting your thesis efforts as well. Questions welcome, keep going!
/**
* Final project assignments supporting the NPS MOVES MV3500 Networked Graphics course.
*
* @see <a href="https://gitlab.nps.edu/Savage/NetworkedGraphicsMV3500/-/tree/master/assignments">networkedGraphicsMV3500 assignments</a>
* @see java.lang.Package
* @see <a href="https://stackoverflow.com/questions/22095487/why-is-package-info-java-useful">StackOverflow: why-is-package-info-java-useful</a>
* @see <a href="https://stackoverflow.com/questions/624422/how-do-i-document-packages-in-java">StackOverflow: how-do-i-document-packages-in-java</a>
*/
package MV3500Cohort2023MarchJune.projects;
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 1995-2022 held by the author(s). All rights reserved.
Copyright (c) 1995-2023 held by the author(s). All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
......
......@@ -2,13 +2,13 @@
This is parent directory for updated course examples, collected under a single Netbeans subproject with common build tasks.
* [TcpExamples](src/TcpExamples)
1. [TcpExamples](src/TcpExamples)
* [UdpMulticastHttpExamples](src/UdpMulticastHttpExamples)
2. [UdpMulticastHttpExamples](src/UdpMulticastHttpExamples)
* [OpenDis7Examples](src/OpenDis7Examples)
3. [OpenDis7Examples](src/OpenDis7Examples)
* [SimkitOpenDis7Examples](src/SimkitOpenDis7Examples) (work in progress)
4. [SimkitOpenDis7Examples](src/SimkitOpenDis7Examples) (work in progress)
These examples are the basis for class programming reviews and homework assignments.
You are welcome to modify or adapt them in any way that you want.
......
# DIS Protocol Examples using Open-DIS-Java Library v7
These examples illustrate use of latest OpenDis7 library for IEEE Distributed Interactive Simulation (DIS) Protocol
### View this page at https://gitlab.nps.edu/Savage/NetworkedGraphicsMV3500/-/blob/master/examples/src/OpenDis7Examples/README.md
All examples tested, running and documented satisfactorily.
This package presents course examples using the [Open-DIS-Java](https://github.com/open-dis/opendis7-java) library, with online [Javadoc](https://savage.nps.edu/opendis7-java/javadoc) showing complete coverage of 72 PDUs and 22,000+ enumerations).
This package presents course examples using the [Open-DIS-Java](https://github.com/open-dis/opendis7-java) library, with online [Javadoc](https://savage.nps.edu/opendis7-java/javadoc) showing complete coverage of 72 DIS PDUs and 22,000+ enumerations.
See the [specifications](../../../specifications) directory to for guidance on obtaining reference copies of DIS and RPRFOM standards.
| AllPduSender packets in Wireshark |EspduSender packets in Wireshark | Example Simulation Program packets in Wireshark | PduReaderPlayer in Wireshark |
|--------------------------------------|----------------------------------|--------------------------------------|----------------------------------|
| ![AllPduSender Wireshark](AllPduSenderWireshark.png "AllPduSender Wireshark") | ![EspduSenderSender Wireshark](EspduSenderWireshark.png "Multicast UDP Sender Wireshark") | ![Example Simulation Program packets in Wireshark](ExampleSimulationProgramWireshark.png "Example Simulation Program packets in Wireshark") | ![PduReaderPlayer in Wireshark](PduReaderPlayerWireshark.png "PduReaderPlayer in Wireshark") |
| AllPduSender packets in Wireshark |EspduSender packets in Wireshark |
|--------------------------------------|----------------------------------|
| ![AllPduSender Wireshark](AllPduSenderWireshark.png "AllPduSender Wireshark") | ![EspduSenderSender Wireshark](EspduSenderWireshark.png "Multicast UDP Sender Wireshark") |
| Example Simulation Program packets in Wireshark | PduReaderPlayer in Wireshark |
|-------------------------------------------------|------------------------------|
| ![Example Simulation Program packets in Wireshark](ExampleSimulationProgramWireshark.png "Example Simulation Program packets in Wireshark") | ![PduReaderPlayer in Wireshark](PduReaderPlayerWireshark.png "PduReaderPlayer in Wireshark") |
\ No newline at end of file
## MV3500 Examples Source Archive
These example directories are presented in the same order provided in the course [../../presentations](presentations).
### View this page at https://gitlab.nps.edu/Savage/NetworkedGraphicsMV3500/-/blob/master/examples/src/README.md
1. [TcpExamples](TcpExamples) show how to create connection-oriented Transmission Control Protocol (TCP) sockets
2. [UdpExamples](UdpExamples) show how to create User Datagram Protocol (UDP) sockets
3. [OpenDis7Examples](OpenDis7Examples) illustrate use of latest OpenDis7 library for IEEE Distributed Interactive Simulation (DIS) Protocol
4. [SimkitOpenDis7Examples](SimkitOpenDis7Examples) provides simple examples combining Simkit Discrete Event Simulation (DES) and IEEE DIS
also with
5. [OpenDis4Examples](OpenDis4Examples) illustrate use of (legacy) OpenDis4 library for IEEE Distributed Interactive Simulation (DIS) Protocol
6. [HttpServletExamples](HttpServletExamples) shows how to use Java Servlets as server-side code running on an http server
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