home *** CD-ROM | disk | FTP | other *** search
Java Source | 1997-01-27 | 3.5 KB | 105 lines |
- /*
- * @(#)MulticastSocket.java 1.11 96/03/13 Pavani Diwanji
- *
- * Copyright (c) 1994 Sun Microsystems, Inc. All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software
- * and its documentation for NON-COMMERCIAL purposes and without
- * fee is hereby granted provided that this copyright notice
- * appears in all copies. Please refer to the file "copyright.html"
- * for further important copyright and licensing information.
- *
- * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
- * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
- * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
- * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
- * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
- */
-
- package sun.net;
-
- import java.io.IOException;
- import java.io.InterruptedIOException;
- import java.net.SocketException;
- import java.net.DatagramPacket;
- import java.net.*;
-
- /**
- * The multicast datagram socket class
- * @author Pavani Diwanji
- */
- public final
- class MulticastSocket extends java.net.DatagramSocket {
-
- static {
- System.loadLibrary("javart");
- }
-
- public MulticastSocket() throws SocketException {
- super();
- }
- public MulticastSocket(int port) throws SocketException {
- super(port);
- }
-
- /**
- * Joins a multicast group.
- * @param mcastaddr is the multicast address to join
- * @exception SocketException: when address is not a multicast address
- * TBD: subclass of socket exception i.e. BadAddress
- */
- public void joinGroup(InetAddress mcastaddr) throws SocketException {
- // TBD: Security check plugs in here, if we want.
- // Its not needed as we do a check on every send and receive anyways.
- multicastJoin(mcastaddr);
- }
-
- /**
- * Leave a multicast group.
- * @param mcastaddr is the multicast address to leave
- * @exception SocketException: when address is not a multicast address
- * TBD: subclass of socket exception i.e. BadAddress
- */
- public void leaveGroup(InetAddress mcastaddr) throws SocketException {
- // TBD: Security check plugs in here, if we want.
- // Its not needed as we do a check on every send and receive anyways.
- multicastLeave(mcastaddr);
- }
-
- /**
- * Sends a datagram packet to the destination
- * @param p the packet to be sent
- * @param ttl optional time to live for multicast packet.
- * default ttl is 1.
- * @exception IOException i/o error occurred
- * @exception SocketException occurs while setting ttl.
- */
-
- public synchronized void send(DatagramPacket p, byte ttl)
- throws IOException, SocketException {
-
- // check the address is ok wiht the security manager on every send.
- // since here the to_address is going to be multicast address
- // we need a seperate hook in the security manager i.e
- // maxttl = security.checkMulticast()
- // we need to make sure that the ttl that user sets is less
- // than the allowed maxttl.
- SecurityManager security = System.getSecurityManager();
- if (security != null) {
- security.checkConnect(p.getAddress().getHostAddress(), p.getPort());
- }
-
- // set the ttl
- setTTL(ttl);
- // call the datagram method to send
- send(p);
- }
-
- private native void setTTL(byte ttl);
- private native void multicastJoin(InetAddress inetaddr);
- private native void multicastLeave(InetAddress inetaddr);
-
- }
-
-