Skip to content
Snippets Groups Projects
Commit 93c4e4b4 authored by garrettloeffelman's avatar garrettloeffelman
Browse files

LoeffelmanSeversonAssignment3

Sent Image via UDP
parent 15295d6a
No related branches found
No related tags found
No related merge requests found
/*
* 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.Loeffelman_Severson_Homework3;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
/**
*
* @author garrettloeffelman
*/
public class LoeffelmanSeversonUDPImageHW3Receiver {
public static final int SENDING_PORT = 1414;
public static final int RECEIVING_PORT = 1415;
public static final String DESINATION_HOST = "localhost";
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
try
{
System.out.println("UdpReceiver started...");
// Create a UDP socket
DatagramSocket udpSocket = new DatagramSocket(RECEIVING_PORT);
Image image = null;
// You need a new receiving packet to read from every packet received
while (true)
{
byte[] receiveBuffer = new byte[100000];
DatagramPacket receivePacket = new DatagramPacket(receiveBuffer, receiveBuffer.length);
udpSocket.receive(receivePacket);
// Decode the contents by extracting the data from the packet
ByteArrayInputStream bais = new ByteArrayInputStream(receivePacket.getData());
BufferedImage bimage = ImageIO.read(bais);
if (!udpSocket.isConnected()) {
System.out.println("Test2");
image = bimage;
break;
}
}
JFrame frame = new JFrame();
frame.setSize(300, 300);
JLabel label = new JLabel(new ImageIcon(image));
frame.add(label);
frame.setVisible(true);
udpSocket.close();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
catch(IOException e)
{
System.out.println("Problem with UdpReceiver, see exception trace:");
System.out.println(e);
}
}
}
/*
* 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.Loeffelman_Severson_Homework3;
import java.awt.image.BufferedImage;
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.URL;
import javax.imageio.ImageIO;
/**
*
* @author garrettloeffelman
*/
public class LoeffelmanSeversonUDPImageSender {
public static final int SENDING_PORT = 1414;
public static final int RECEIVING_PORT = 1415;
public static final String DESTINATION_HOST = "localhost";
@SuppressWarnings("SleepWhileInLoop")
public static void main(String[] args)
{
try
{
System.out.println("UdpSender started...");
// Create a UDP socket
DatagramSocket udpSocket = new DatagramSocket(SENDING_PORT);
// 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();
DataOutputStream dos = new DataOutputStream(baos);
// alternatives: writeFloat(17.0f); writeInt(17); writeUTF("\"hello MV3500 no really\"");
URL url1 = new URL("https://cdn1.iconfinder.com/data/icons/cute-monkey-emoticon/595/MONKEY_EMOTICON-05-512.png");
URL url2 = new URL("https://images.all-free-download.com/images/graphicthumb/yammi_banana_99225.jpg");
// 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.
BufferedImage image = ImageIO.read(url1);
ImageIO.write(image, "png", baos);
byte[] buffer = baos.toByteArray();
// Put together a packet to send
// ID of the host we are sending to
InetAddress destinationAddress = InetAddress.getByName(DESTINATION_HOST);
DatagramPacket packet = new DatagramPacket(buffer, buffer.length, destinationAddress, RECEIVING_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?
for (int index = 1; index <= buffer.length; index++) // avoid infinite send loops in code, they can be hard to kill!
{
udpSocket.send(packet);
System.out.println("Sent packet " + index + " of 100");
}
System.out.println("UdpSender complete.");
}
catch (IOException e)
{
System.out.println("Problem with UdpSender, see exception trace:");
System.out.println(e);
}
}
}
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