Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
NetworkedGraphicsMV3500
Manage
Activity
Members
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Container Registry
Model registry
Analyze
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Savage
NetworkedGraphicsMV3500
Commits
124a358a
Commit
124a358a
authored
7 years ago
by
Kens
Browse files
Options
Downloads
Patches
Plain Diff
Homework2
parent
27640393
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
projects/Assignments/homework2/MaroonMulticastReceiver.java
+70
-0
70 additions, 0 deletions
projects/Assignments/homework2/MaroonMulticastReceiver.java
projects/Assignments/homework2/MaroonMulticastSenderExample.java
+86
-0
86 additions, 0 deletions
...s/Assignments/homework2/MaroonMulticastSenderExample.java
with
156 additions
and
0 deletions
projects/Assignments/homework2/MaroonMulticastReceiver.java
0 → 100644
+
70
−
0
View file @
124a358a
import
java.io.*
;
import
java.net.*
;
/**
*
* @author mcgredo
*/
public
class
MaroonMulticastReceiver
{
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
{
// This is a java/IPv6 problem. You should also add it to the
// arguments used to start the app, eg -Djava.net.preferIPv4Stack=true
// set in the "run" section of preferences. Also, typically
// netbeans must be restarted after these settings.
// https://stackoverflow.com/questions/18747134/getting-cant-assign-requested-address-java-net-socketexception-using-ehcache
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
int
count
=
0
;
while
(
true
)
{
byte
[]
packetArray
=
new
byte
[
1500
];
DatagramPacket
packet
=
new
DatagramPacket
(
packetArray
,
packetArray
.
length
);
multicastSocket
.
receive
(
packet
);
count
++;
ByteArrayInputStream
bais
=
new
ByteArrayInputStream
(
packet
.
getData
());
DataInputStream
dis
=
new
DataInputStream
(
bais
);
int
firstNumber
=
dis
.
readInt
();
int
messageLength
=
dis
.
readInt
();
String
message
=
""
;
for
(
int
i
=
0
;
i
<
messageLength
;
i
++){
message
+=
dis
.
readChar
();
}
System
.
out
.
println
(
"Number received: "
+
count
+
" First number:"
+
firstNumber
+
" message:"
+
message
);
}
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
e
);
}
}
}
This diff is collapsed.
Click to expand it.
projects/Assignments/homework2/MaroonMulticastSenderExample.java
0 → 100644
+
86
−
0
View file @
124a358a
import
java.io.*
;
import
java.net.*
;
/**
* Looks a lot like a UDP sender.
*
* @author mcgredo
*/
public
class
MaroonMulticastSenderExample
{
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
{
// This is a java/IPv6 problem. You should also add it to the
// arguments used to start the app, eg -Djava.net.preferIPv4Stack=true
// set in the "run" section of preferences. Also, typically
// netbeans must be restarted after these settings.
// https://stackoverflow.com/questions/18747134/getting-cant-assign-requested-address-java-net-socketexception-using-ehcache
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
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
baos
=
new
ByteArrayOutputStream
();
DataOutputStream
dos
=
new
DataOutputStream
(
baos
);
dos
.
writeInt
(
1
);
String
message
=
"Hammertime"
;
dos
.
writeInt
(
message
.
length
());
dos
.
writeChars
(
message
);
byte
[]
buffer
=
baos
.
toByteArray
();
DatagramPacket
packet1
=
new
DatagramPacket
(
buffer
,
buffer
.
length
,
multicastAddress
,
DESTINATION_PORT
);
baos
.
reset
();
dos
.
writeInt
(
2
);
message
=
"Collaberate and Listen"
;
dos
.
writeInt
(
message
.
length
());
dos
.
writeChars
(
message
);
buffer
=
baos
.
toByteArray
();
DatagramPacket
packet2
=
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?
for
(
int
idx
=
0
;
idx
<
1000
;
idx
++)
{
multicastSocket
.
send
(
packet1
);
multicastSocket
.
send
(
packet2
);
Thread
.
sleep
(
1000
);
// Send 100, one per second
System
.
out
.
println
(
"Sent multicast packet "
+
idx
+
" of 100"
);
}
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
e
);
}
}
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment