Skip to content
Snippets Groups Projects
Commit 7aa4c5b0 authored by Terry D. Norbraten's avatar Terry D. Norbraten
Browse files

Merge origin/master

Conflicts:
	examples/src/UdpMulticastExamples/UdpSender.java
parents 4ee5e60b eb22510e
No related branches found
No related tags found
No related merge requests found
Showing
with 771 additions and 4 deletions
No preview for this file type
No preview for this file type
File added
...@@ -6,7 +6,7 @@ import java.net.*; ...@@ -6,7 +6,7 @@ import java.net.*;
/** /**
* A program that handles all logic associated with one socket connection * A program that handles all logic associated with one socket connection
* by running in a thread of its own. This is the server * by running in a thread of its own. This is the server
* portion * portion (little changes)
* *
* @author Bernd Weissenberger * @author Bernd Weissenberger
*/ */
......
package MV3500Cohort2020JulySeptember.homework3.Garibay;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
/**
*
* @author chris
*/
public class UDPReceiverGaribay
{
// public static final int SENDING_PORT = 1414; // port used by UdpSender, unneeded here
public static final int RECEIVING_PORT = 1415;
public static final String DESINATION_HOST = "localhost";
/**
* @param args the command line arguments
* @throws java.io.IOException
*/
public static void main(String[] args) throws IOException
{
DatagramSocket udpSocket = null;
try
{
System.out.println(UdpReceiver.class.getName() + " started...");
// Create a UDP socket
udpSocket = new DatagramSocket(RECEIVING_PORT);
udpSocket.setReceiveBufferSize(1500); // how many bytes are in buffer? MTU=1500 is good
udpSocket.setBroadcast(false); // we're just receiving here
byte[] byteArray = new byte[1500];
DatagramPacket receivePacket = new DatagramPacket(byteArray, byteArray.length);
ByteArrayInputStream bais = new ByteArrayInputStream(byteArray);
DataInputStream dis = new DataInputStream(bais);
boolean isEvenParity;
int packetCount = 0;
int firstInt;
float secondFloat;
String thirdString;
String padding;
// You need a new receiving packet to read from every packet received
while (true)
{
packetCount++; // good practice to increment counter at start of loop, when possible
udpSocket.receive(receivePacket); // blocks until packet is received
// values of interest follow. order and types of what was sent must match what you are reading!
firstInt = dis.readInt(); // packetID
secondFloat = dis.readFloat();
thirdString = dis.readUTF(); // string value with guaranteed encoding, matches UTF-8 is 8 bit
isEvenParity = dis.readBoolean(); // ok, we've gotten everything we're looking for.
dis.reset(); // now clear the input stream after reading, in preparation for next loop
if (isEvenParity)
padding = " ";
else padding = "";
System.out.println("[" + UdpReceiver.class.getName() + "]" +
" packetID=" + firstInt + // have output message use same name as sender
", second float value=" + secondFloat +
", third String value=\"" + thirdString + "\"" + // note that /" is literal quote character
" isPacketIdEvenParity=" + isEvenParity + "," + padding +
" packet counter=" + packetCount);
}
}
catch(IOException e)
{
System.err.println("Problem with UdpReceiver, see exception trace:");
System.err.println(e);
}
finally // clean up prior to exit, don't want to leave behind zombie socket
{
if (udpSocket != null)
udpSocket.close();
System.out.println(UdpReceiver.class.getName() + " complete."); // all done
}
}
}
package MV3500Cohort2020JulySeptember.homework3.Garibay;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/**
*
* @author chris
*/
public class UDPSenderGaribay
{
// System properties: https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html
public static final String MY_NAME = System.getProperty("user.name"); // guru incantation 8)
// public static final int SENDING_PORT = 1414; // not needed, can let system choose an open local port
public static final int RECEIVING_PORT = 1415;
public static final int TOTAL_PACKETS_TO_SEND = 100;
// here is what we need for lab comms
// Bill Mahan's host ip
public static final String DESTINATION_HOST = "10.1.105.13"; // localhost 127.0.0.1 or argon 10.1.105.1 or 10.1.105.1 or whatever
@SuppressWarnings("SleepWhileInLoop")
public static void main(String[] args) throws IOException
{
DatagramSocket udpSocket = null;
DataOutputStream dos = null;
int packetID = 0; // counter variable to send in packet
float value = -1.0f; // unreachable value is good sentinel to ensure expected changes occur
String message = MY_NAME + "It's not a trick question!"; // no really
String padding = new String();
try
{
System.out.println(UdpSender.class.getName() + " shows how to send simple-type values via DataOutputStream");
System.out.println(UdpSender.class.getName() + " started...");
// Create a UDP socket
udpSocket = new DatagramSocket(); // let system assign output port, then SENDING_PORT not needed
// 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 baos = new ByteArrayOutputStream(1500); // how many bytes are in buffer? MTU=1500 is good
dos = new DataOutputStream(baos); // wrapper for writing values, connects both streams
// Put together a packet to send
// these types and order of variables must match on sender and receiver
byte[] byteArray = baos.toByteArray();
// ID of the host we are sending to
InetAddress destinationAddress = InetAddress.getByName(DESTINATION_HOST);
// ID of the host we are sending from
InetAddress sourceAddress = InetAddress.getByName("localhost"); // possibly identical if source not modified
DatagramPacket datagramPacket = new DatagramPacket(byteArray, byteArray.length, destinationAddress, RECEIVING_PORT);
// Hmmm, how fast does UDP stream go? Does UDP effectively slow packets 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? your responsibility.
for (int index = 1; index <= TOTAL_PACKETS_TO_SEND; index++) // avoid infinite send loops in code, they can be hard to kill!
{
packetID++; // increment counter, prefer using explicit value to index
value = TOTAL_PACKETS_TO_SEND - packetID; // countdown
boolean isPacketIdEvenParity = ((packetID % 2) == 0); // % is modulo operator; result 0 is even parity, 1 is odd parity
// values of interest follow. order and types of what was sent must match what you are reading!
dos.writeInt (packetID);
dos.writeFloat (value);
dos.writeUTF (message); // string value with guaranteed encoding, matches UTF-8 is 8 bit
dos.writeBoolean(isPacketIdEvenParity);
dos.flush(); // sends DataOutputStream to ByteArrayOutputStream
byteArray = baos.toByteArray(); // OK so go get the flushed result...
datagramPacket.setData(byteArray); // and put it in the packet...
udpSocket.send(datagramPacket); // and send it away. boom gone, nonblocking.
// System.out.println("udpSocket output port=" + udpSocket.getLocalPort()); // diagnostic tells what port was chosen by system
if (isPacketIdEvenParity)
padding = " ";
else padding = "";
Thread.sleep(1000); // Send packets at rate of one per second
System.out.println("[" + UdpSender.class.getName() + "] " + MY_NAME + " " + sourceAddress +
" sent values(" + packetID + "," + value + ",\"" + message + "\"," + isPacketIdEvenParity +
")" + padding + " as packet #" + index + " of " + TOTAL_PACKETS_TO_SEND);
baos.reset(); // clear the output stream after sending
}
}
catch (IOException | InterruptedException e)
{
System.err.println("Problem with UdpSender, see exception trace:");
System.err.println(e);
}
finally // clean up prior to exit, don't want to leave behind zombies
{
if (udpSocket != null)
udpSocket.close();
if (dos != null)
dos.close();
System.out.println(UdpSender.class.getName() + " complete."); // all done
}
}
}
package MV3500Cohort2020JulySeptember.homework3.Goericke;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
/**
* This class will be connected by an TCP sender over VPN (argon), calculating
* a result of an equation and send the result back via UDP over VPN.
* @date 08/17/2020
* @group Goericke/Weissenberger
*/
public class TCPNumberReceiverUDPResultSender {
// Change this to the port where the TCP server is listening
private static final int TCP_ARGON_SERVER_PORT = 2317;
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
try {
// ServerSocket waits for a connection from a client.
System.out.println("TCPNumberReceiver has started...");
ServerSocket serverSocket = new ServerSocket(TCP_ARGON_SERVER_PORT);
InetAddress remoteAddress;
// declare the stream and readers
InputStream inputStream;
InputStreamReader inputStreamReader;
BufferedReader bufferedReader;
// declare needed variables
String clientMessage;
int number1, number2;
String calculation_Method;
int iUDPResultReceivingPort;
// Server is up and waiting (i.e. "blocked" or paused)
// Loop, infinitely, waiting for client connections.
while (true) {
// block until connected to a client
try (Socket clientConnectionSocket = serverSocket.accept())
{
// Now hook everything up (i.e. set up the streams), Java style:
inputStream = clientConnectionSocket.getInputStream();
inputStreamReader = new InputStreamReader(inputStream);
bufferedReader = new BufferedReader(inputStreamReader);
// get the date from TCP packet
clientMessage = bufferedReader.readLine();
number1 = Integer.parseInt(bufferedReader.readLine());
number2 = Integer.parseInt(bufferedReader.readLine());
calculation_Method = bufferedReader.readLine();
iUDPResultReceivingPort = Integer.parseInt(bufferedReader.readLine());
// print them out (for debugging)
System.out.println("Message recived: "+clientMessage);
System.out.println("Number 1 recived: "+number1);
System.out.println("Number 2 recived: "+number2);
System.out.println("Calc Method recived: "+calculation_Method);
System.out.println("Send result to port: "+iUDPResultReceivingPort);
// get the sender IP (is used for sending UDP)
remoteAddress = clientConnectionSocket.getInetAddress();
System.out.println("Send result to IP: "+remoteAddress.getHostAddress());
// try to send the calculated result as a float via UDP...
sendResultViaUDP(calculateResult(number1, number2, calculation_Method), remoteAddress, iUDPResultReceivingPort);
}
}
} catch (IOException e) {
System.err.println("Problem with TcpExample3Server 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!");
}
}
}
/**
* send the result to Bernd 10x
* @param result
* @param inetAddress Bernd's IP
* @param port Bernd's UDP port number
* @throws IOException
*/
private static void sendResultViaUDP(float result, InetAddress inetAddress, int port) throws IOException{
DatagramSocket udpSocket = null;
DataOutputStream dos = null;
try
{
// Create a UDP socket
udpSocket = new DatagramSocket(); // let system assign output port, then SENDING_PORT not needed
// 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 baos = new ByteArrayOutputStream(1500); // how many bytes are in buffer? MTU=1500 is good
dos = new DataOutputStream(baos); // wrapper for writing values, connects both streams
// Put together a packet to send
// these types and order of variables must match on sender and receiver
byte[] byteArray = baos.toByteArray();
DatagramPacket datagramPacket = new DatagramPacket(byteArray, byteArray.length, inetAddress, port);
for (int index = 1; index <= 10; index++)
{
dos.writeFloat (result);
dos.flush(); // sends DataOutputStream to ByteArrayOutputStream
byteArray = baos.toByteArray(); // OK so go get the flushed result...
datagramPacket.setData(byteArray); // and put it in the packet...
udpSocket.send(datagramPacket); // and send it away. boom gone, nonblocking.
Thread.sleep(1000); // Send packets at rate of one per second
baos.reset(); // clear the output stream after sending
}
dos.close();
}
catch (IOException | InterruptedException e)
{
System.err.println("Problem with UdpSender, see exception trace:");
System.err.println(e);
}
finally // clean up prior to exit, don't want to leave behind zombies
{
if (udpSocket != null)
udpSocket.close();
if (dos != null)
dos.close();
}
}
/**
* calculates the result based on given numbers and operator
* @param n1 first number
* @param n2 second number
* @param operator
* @return the result as a float
*/
private static float calculateResult(int n1, int n2, String operator){
float result = -1;
switch (operator) {
case "+":
result = n1 + n2;
break;
case "-":
result = n1 - n2;
break;
case "*":
result = n1 * n2;
break;
case "/":
result = n1 / n2;
break;
default:
System.err.println(operator +" is not a valid operator!");
break;
}
return result;
}
}
package MV3500Cohort2020JulySeptember.homework3.Mahan;
import java.io.*;
import java.net.*;
/**
*
* @author Bill
*/
public class MahanUdpReceiver
{
// public static final int SENDING_PORT = 1414; // port used by UdpSender, unneeded here
public static final int RECEIVING_PORT = 1415;
public static final String DESINATION_HOST = "10.1.105.12";
/**
* @param args the command line arguments
* @throws java.io.IOException
*/
public static void main(String[] args) throws IOException
{
DatagramSocket udpSocket = null;
try
{
System.out.println(MahanUdpReceiver.class.getName() + " started...");
// Create a UDP socket
udpSocket = new DatagramSocket(RECEIVING_PORT);
udpSocket.setReceiveBufferSize(1500); // how many bytes are in buffer? MTU=1500 is good
udpSocket.setBroadcast(false); // we're just receiving here
byte[] byteArray = new byte[1500];
DatagramPacket receivePacket = new DatagramPacket(byteArray, byteArray.length);
ByteArrayInputStream bais = new ByteArrayInputStream(byteArray);
DataInputStream dis = new DataInputStream(bais);
boolean isEvenParity;
int packetCount = 0;
int firstInt;
float secondFloat;
String thirdString;
String padding;
// You need a new receiving packet to read from every packet received
while (true)
{
packetCount++; // good practice to increment counter at start of loop, when possible
udpSocket.receive(receivePacket); // blocks until packet is received
// values of interest follow. order and types of what was sent must match what you are reading!
firstInt = dis.readInt(); // packetID
secondFloat = dis.readFloat();
thirdString = dis.readUTF(); // string value with guaranteed encoding, matches UTF-8 is 8 bit
isEvenParity = dis.readBoolean(); // ok, we've gotten everything we're looking for.
dis.reset(); // now clear the input stream after reading, in preparation for next loop
if (isEvenParity)
padding = " ";
else padding = "";
System.out.println("[" + MahanUdpReceiver.class.getName() + "]" +
" packetID=" + firstInt + // have output message use same name as sender
", second float value=" + secondFloat +
", third String value=\"" + thirdString + "\"" + // note that /" is literal quote character
" isPacketIdEvenParity=" + isEvenParity + "," + padding +
" packet counter=" + packetCount);
}
}
catch(IOException e)
{
System.err.println("Problem with UdpReceiver, see exception trace:");
System.err.println(e);
}
finally // clean up prior to exit, don't want to leave behind zombie socket
{
if (udpSocket != null)
udpSocket.close();
System.out.println(MahanUdpReceiver.class.getName() + " complete."); // all done
}
}
}
package MV3500Cohort2020JulySeptember.homework3.Mahan;
import java.io.*;
import java.net.*;
/**
*
* @author Bill
*/
public class MahanUdpSender
{
// System properties: https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html
public static final String MY_NAME = System.getProperty("user.name"); // guru incantation 8)
// public static final int SENDING_PORT = 1414; // not needed, can let system choose an open local port
public static final int RECEIVING_PORT = 1415;
public static final int TOTAL_PACKETS_TO_SEND = 100;
// here is what we need for lab comms
public static final String DESTINATION_HOST = "10.1.105.12"; // localhost 127.0.0.1 or argon 10.1.105.1 or 10.1.105.1 or whatever
@SuppressWarnings("SleepWhileInLoop")
public static void main(String[] args) throws IOException
{
DatagramSocket udpSocket = null;
DataOutputStream dos = null;
int packetID = 0; // counter variable to send in packet
float value = -1.0f; // unreachable value is good sentinel to ensure expected changes occur
String message = MY_NAME + " says I see you Chris"; // no really
String padding = new String();
try
{
System.out.println(MahanUdpSender.class.getName() + " shows how to send simple-type values via DataOutputStream");
System.out.println(MahanUdpSender.class.getName() + " started...");
// Create a UDP socket
udpSocket = new DatagramSocket(); // let system assign output port, then SENDING_PORT not needed
// 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 baos = new ByteArrayOutputStream(1500); // how many bytes are in buffer? MTU=1500 is good
dos = new DataOutputStream(baos); // wrapper for writing values, connects both streams
// Put together a packet to send
// these types and order of variables must match on sender and receiver
byte[] byteArray = baos.toByteArray();
// ID of the host we are sending to
InetAddress destinationAddress = InetAddress.getByName(DESTINATION_HOST);
// ID of the host we are sending from
InetAddress sourceAddress = InetAddress.getByName("localhost"); // possibly identical if source not modified
DatagramPacket datagramPacket = new DatagramPacket(byteArray, byteArray.length, destinationAddress, RECEIVING_PORT);
// Hmmm, how fast does UDP stream go? Does UDP effectively slow packets 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? your responsibility.
for (int index = 1; index <= TOTAL_PACKETS_TO_SEND; index++) // avoid infinite send loops in code, they can be hard to kill!
{
packetID++; // increment counter, prefer using explicit value to index
value = TOTAL_PACKETS_TO_SEND - packetID; // countdown
boolean isPacketIdEvenParity = ((packetID % 2) == 0); // % is modulo operator; result 0 is even parity, 1 is odd parity
// values of interest follow. order and types of what was sent must match what you are reading!
dos.writeInt (packetID);
dos.writeFloat (value);
dos.writeUTF (message); // string value with guaranteed encoding, matches UTF-8 is 8 bit
dos.writeBoolean(isPacketIdEvenParity);
dos.flush(); // sends DataOutputStream to ByteArrayOutputStream
byteArray = baos.toByteArray(); // OK so go get the flushed result...
datagramPacket.setData(byteArray); // and put it in the packet...
udpSocket.send(datagramPacket); // and send it away. boom gone, nonblocking.
// System.out.println("udpSocket output port=" + udpSocket.getLocalPort()); // diagnostic tells what port was chosen by system
if (isPacketIdEvenParity)
padding = " ";
else padding = "";
Thread.sleep(1000); // Send packets at rate of one per second
System.out.println("[" + MahanUdpSender.class.getName() + "] " + MY_NAME + " " + sourceAddress +
" sent values(" + packetID + "," + value + ",\"" + message + "\"," + isPacketIdEvenParity +
")" + padding + " as packet #" + index + " of " + TOTAL_PACKETS_TO_SEND);
baos.reset(); // clear the output stream after sending
}
}
catch (IOException | InterruptedException e)
{
System.err.println("Problem with UdpSender, see exception trace:");
System.err.println(e);
}
finally // clean up prior to exit, don't want to leave behind zombies
{
if (udpSocket != null)
udpSocket.close();
if (dos != null)
dos.close();
System.out.println(MahanUdpSender.class.getName() + " complete."); // all done
}
}
}
assignments/src/MV3500Cohort2020JulySeptember/homework3/Mahan/receiving screenshot.png

109 KiB

assignments/src/MV3500Cohort2020JulySeptember/homework3/Mahan/sendingscreenshot.png

57.4 KiB

...@@ -10,3 +10,30 @@ References include ...@@ -10,3 +10,30 @@ References include
* [assignments source subdirectories](../../../../../assignments/src) show examples from previous cohorts. * [assignments source subdirectories](../../../../../assignments/src) show examples from previous cohorts.
Questions and innovation are always welcome, good luck! Questions and innovation are always welcome, good luck!
**************************************************
Project for HW #3
Team: "Germany" (Stefan and Bernd)
**************************************************
This program(s) do(es) the following:
- send two numbers, a mathematical operator and a port number over VPN to a TCP receiver
- the TCP receiver calculates the result and send it back to the sender over VPN using UDP!
- the UDP receiver shows the result
The main focus was to send via TCP over a VPN, do something and send the result back via UDP.
How to run the project:
0. connect both computer with the argon net
1. run UDPResultReceiver on Bernd's computer
2. run TCPNumberReceiverUDPResultSender on Stefan's computer
3. find Stefan's IP within the argon net
4. change the TCP_ARGON_SERVER_IP in class TCPNumberSender to Stefan's IP.
5. run TCPNumberSender
(you can edit the numbers and run TCPNumberSender multiple times...)
File added
package MV3500Cohort2020JulySeptember.homework3.Weissenberger;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;
/**
* This class will connect to an TCP receiver over VPN (argon) and send
* two numbers
* @date 08/17/2020
* @author Loki
* @group Weissenberger/Goericke
*/
public class TCPNumberSender {
// Change this to the IP address of the TCP server 10.1.105.9 (127.0.0.1 just for testing)
private static final String TCP_ARGON_SERVER_IP = "127.0.0.1";
// Change this to the port where the TCP server is listening
private static final int TCP_ARGON_SERVER_PORT = 2317;
// Where the result should be posted (port)
private static final int UDP_ARGON_RECEIVING_PORT = 1415;
private static final int NUMBER1 = 16;
private static final int NUMBER2 = 2;
private static final String CALCULATION_METHOD = "-";
// how many times should the number being sent
private static final int REPETITION = 1;
private static int counter = 0;
public static void main(String[] args) throws InterruptedException {
// Local variables
Socket socket;
OutputStream outputStream;
PrintStream printStream;
try {
while (counter < REPETITION){
// increment the counter
counter++;
System.out.println("Homwork 3: TcpNumberSender creating socket over VPN...");
// We request an IP to connect to "TCP_ARGON_SERVER_IP" over
// the argon VPN and port number at that IP "TCP_ARGON_SERVER_PORT".
// This establishes a connection to that IP in the form of a Socket
// object.
socket = new Socket(TCP_ARGON_SERVER_IP, TCP_ARGON_SERVER_PORT); // locohost?
// instanciate the streams:
outputStream = socket.getOutputStream();
printStream = new PrintStream(outputStream);
// send a first text to server
printStream.println("This is message from client.");
printStream.flush();
// wait 1 second
Thread.sleep(1000);
// sending number 1
printStream.println(NUMBER1);
// sending number 2
printStream.println(NUMBER2);
// sending calc method
printStream.println(CALCULATION_METHOD);
// sending the port where the result should be send to
printStream.println(UDP_ARGON_RECEIVING_PORT);
printStream.flush();
// wait 1 second
Thread.sleep(1000);
System.out.println("==================================================");
System.out.println(NUMBER1+" and "+NUMBER2+" were sent to server. Calculating method was: "+CALCULATION_METHOD);
// close TCP socket to server
socket.close();
} // end while(true)
}
catch (IOException e)
{
System.err.println("Problem with TCPNumberSender networking:");
System.err.println("Error: " + e);
if (e instanceof java.net.BindException) {
System.err.println("*** Be sure to stop any other running instances of programs using this port: "+TCP_ARGON_SERVER_PORT);
}
}
finally // occurs after any other activity when shutting down
{
System.out.println();
System.out.println("TCPNumberSender exit");
}
}
}
package MV3500Cohort2020JulySeptember.homework3.Weissenberger;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
/**
* This class will be connected by an UDP sender over VPN (argon)
* @date 08/17/2020
* @author Loki
* @group Weissenberger/Goericke
*/
public class UDPResultReceiver {
public static final int RECEIVING_PORT = 1415;
/**
* @param args the command line arguments
* @throws java.io.IOException
*/
public static void main(String[] args) throws IOException
{
DatagramSocket udpSocket = null;
try
{
System.out.println(UDPResultReceiver.class.getName() + " started...");
// Create a UDP socket
udpSocket = new DatagramSocket(RECEIVING_PORT);
udpSocket.setReceiveBufferSize(1500); // how many bytes are in buffer? MTU=1500 is good
udpSocket.setBroadcast(false); // we're just receiving here
byte[] byteArray = new byte[1500];
DatagramPacket receivePacket = new DatagramPacket(byteArray, byteArray.length);
ByteArrayInputStream bais = new ByteArrayInputStream(byteArray);
DataInputStream dis = new DataInputStream(bais);
float result;
// You need a new receiving packet to read from every packet received
while (true)
{
udpSocket.receive(receivePacket); // blocks until packet is received
result = dis.readFloat();
dis.reset(); // now clear the input stream after reading, in preparation for next loop
System.out.println("Calculated result: "+result);
}
}
catch(IOException e)
{
System.err.println("Problem with UdpReceiver, see exception trace:");
System.err.println(e);
}
finally // clean up prior to exit, don't want to leave behind zombie socket
{
if (udpSocket != null)
udpSocket.close();
System.out.println(UDPResultReceiver.class.getName() + " complete."); // all done
}
}
}
assignments/src/MV3500Cohort2020JulySeptember/homework3/Weissenberger/logic.jpg

35.2 KiB

File added
assignments/src/MV3500Cohort2020JulySeptember/homework3/Weissenberger/sequence.jpg

55 KiB

File added
...@@ -27,9 +27,13 @@ public class HttpWebPageSource { ...@@ -27,9 +27,13 @@ public class HttpWebPageSource {
// We request an IP to connect to a web server running on default http port 80. // We request an IP to connect to a web server running on default http port 80.
String WEB_ADDRESS = "www.nps.edu"; String WEB_SERVER_ADDRESS = "www.nps.edu";
System.out.println("New socket WEB_ADDRESS=" + WEB_ADDRESS); int WEB_SERVER_PORT_HTTP = 80;
Socket socket = new Socket(WEB_ADDRESS, 80); // compare alternative: https on port 443 int WEB_SERVER_PORT_HTTPS = 443; // does this work too?
System.out.println("New socket WEB_ADDRESS=" + WEB_SERVER_ADDRESS);
// this Java construct will work for HTTP but not HTTPS
Socket socket = new Socket(WEB_SERVER_ADDRESS, WEB_SERVER_PORT_HTTPS); // compare alternative: https on port 443
// we send a command to the web server, asking for what // we send a command to the web server, asking for what
// we want. Note that the format for the command is very // we want. Note that the format for the command is very
......
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