diff --git a/examples/src/UdpMulticastExamples/MulticastSender.java b/examples/src/UdpMulticastExamples/MulticastSender.java
index ef30a4d4f540144eff6b023d8761e143ab8f7be2..ef698d274c20274df27d411d240bcc451add523f 100644
--- a/examples/src/UdpMulticastExamples/MulticastSender.java
+++ b/examples/src/UdpMulticastExamples/MulticastSender.java
@@ -3,6 +3,8 @@ package UdpMulticastExamples;
 import edu.nps.moves.dis7.utilities.DisThreadedNetIF;
 import java.io.*;
 import java.net.*;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 /**
  * Looks a lot like UdpSender.  Start this after launching MulticastReceiver.
@@ -28,11 +30,13 @@ public class MulticastSender {
     public static final int LOOPSIZE = 20; // 20000
     
     public static final String QUIT_SENTINEL = "QUIT QUIT QUIT!";
+    private static NetworkInterface ni;
     
     @SuppressWarnings("SleepWhileInLoop")
     public static void main(String[] args) throws IOException 
     {
         MulticastSocket multicastSocket = null;
+        InetSocketAddress group = null;
         
         // Put together a message with binary content. "ByteArrayOutputStream"
         // is a java.io utility that lets us put together an array of binary
@@ -51,18 +55,18 @@ public class MulticastSender {
             System.setProperty("java.net.preferIPv4Stack", "true");
             
             // multicast group we are sending to--not a single host
-            multicastSocket = new MulticastSocket(DESTINATION_PORT);
+            multicastSocket = new MulticastSocket(/*DESTINATION_PORT*/);
             multicastSocket.setTimeToLive(TTL); // time to live reduces scope of transmission
             InetAddress multicastAddress = InetAddress.getByName(MULTICAST_ADDRESS);
             System.out.println("Multicast address/port: " + multicastAddress.getHostAddress() + "/" + DESTINATION_PORT);
             
-            InetSocketAddress group = new InetSocketAddress(multicastAddress, DESTINATION_PORT);
+            group = new InetSocketAddress(multicastAddress, DESTINATION_PORT);
             // Join group useful on receiving side
-            multicastSocket.joinGroup(group, DisThreadedNetIF.findIpv4Interface());
+            multicastSocket.joinGroup(group, ni = DisThreadedNetIF.findIpv4Interface());
             // You can join multiple groups here
             
             byte[] buffer = baos.toByteArray();
-            DatagramPacket packet = new DatagramPacket(buffer, buffer.length, multicastAddress, DESTINATION_PORT);
+            DatagramPacket packet = new DatagramPacket(buffer, buffer.length, group/*, DESTINATION_PORT*/);
             
             for (int index = 0; index < LOOPSIZE; index++)
             {
@@ -99,8 +103,14 @@ public class MulticastSender {
             System.err.println(e);
         } finally {
             
-            if (multicastSocket != null)
+            if (multicastSocket != null && !multicastSocket.isClosed()) {
+                try {
+                    multicastSocket.leaveGroup(group, ni);
+                } catch (IOException ex) {
+                    Logger.getLogger(MulticastSender.class.getName()).log(Level.SEVERE, null, ex);
+                }
                 multicastSocket.close();
+            }
             
             dos.close();
         }