home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / java / net / MulticastSocket.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  3.2 KB  |  125 lines

  1. package java.net;
  2.  
  3. import java.io.IOException;
  4.  
  5. public class MulticastSocket extends DatagramSocket {
  6.    private Object ttlLock = new Object();
  7.  
  8.    public MulticastSocket() throws IOException {
  9.    }
  10.  
  11.    public MulticastSocket(int var1) throws IOException {
  12.       super(var1);
  13.    }
  14.  
  15.    void create(int var1, InetAddress var2) throws SocketException {
  16.       SecurityManager var3 = System.getSecurityManager();
  17.       if (var3 != null) {
  18.          var3.checkListen(var1);
  19.       }
  20.  
  21.       if (DatagramSocket.factory != null) {
  22.          super.impl = DatagramSocket.factory.createDatagramSocketImpl();
  23.       } else {
  24.          try {
  25.             super.impl = (DatagramSocketImpl)DatagramSocket.implClass.newInstance();
  26.          } catch (Exception var5) {
  27.             throw new SocketException("can't instantiate DatagramSocketImpl" + ((Throwable)var5).toString());
  28.          }
  29.       }
  30.  
  31.       super.impl.create();
  32.       super.impl.setOption(4, new Integer(-1));
  33.       super.impl.bind(var1, InetAddress.anyLocalAddress);
  34.    }
  35.  
  36.    public void setTTL(byte var1) throws IOException {
  37.       super.impl.setTTL(var1);
  38.    }
  39.  
  40.    public void setTimeToLive(int var1) throws IOException {
  41.       if (var1 >= 0 && var1 <= 255) {
  42.          super.impl.setTimeToLive(var1);
  43.       } else {
  44.          throw new IllegalArgumentException("ttl out of range");
  45.       }
  46.    }
  47.  
  48.    public byte getTTL() throws IOException {
  49.       return super.impl.getTTL();
  50.    }
  51.  
  52.    public int getTimeToLive() throws IOException {
  53.       return super.impl.getTimeToLive();
  54.    }
  55.  
  56.    public void joinGroup(InetAddress var1) throws IOException {
  57.       SecurityManager var2 = System.getSecurityManager();
  58.       if (var2 != null) {
  59.          var2.checkMulticast(var1);
  60.       }
  61.  
  62.       super.impl.join(var1);
  63.    }
  64.  
  65.    public void leaveGroup(InetAddress var1) throws IOException {
  66.       SecurityManager var2 = System.getSecurityManager();
  67.       if (var2 != null) {
  68.          var2.checkMulticast(var1);
  69.       }
  70.  
  71.       super.impl.leave(var1);
  72.    }
  73.  
  74.    public void setInterface(InetAddress var1) throws SocketException {
  75.       super.impl.setOption(16, var1);
  76.    }
  77.  
  78.    public InetAddress getInterface() throws SocketException {
  79.       return (InetAddress)super.impl.getOption(16);
  80.    }
  81.  
  82.    public void send(DatagramPacket var1, byte var2) throws IOException {
  83.       Object var3 = this.ttlLock;
  84.       synchronized(var3) {
  85.          synchronized(var1) {
  86.             if (!super.connected) {
  87.                SecurityManager var17 = System.getSecurityManager();
  88.                if (var17 != null) {
  89.                   if (var1.getAddress().isMulticastAddress()) {
  90.                      var17.checkMulticast(var1.getAddress(), var2);
  91.                   } else {
  92.                      var17.checkConnect(var1.getAddress().getHostAddress(), var1.getPort());
  93.                   }
  94.                }
  95.             } else {
  96.                Object var5 = null;
  97.                InetAddress var16 = var1.getAddress();
  98.                if (var16 == null) {
  99.                   var1.setAddress(super.connectedAddress);
  100.                   var1.setPort(super.connectedPort);
  101.                } else if (!var16.equals(super.connectedAddress) || var1.getPort() != super.connectedPort) {
  102.                   throw new SecurityException("connected address and packet address differ");
  103.                }
  104.             }
  105.  
  106.             byte var18 = this.getTTL();
  107.  
  108.             try {
  109.                if (var2 != var18) {
  110.                   super.impl.setTTL(var2);
  111.                }
  112.  
  113.                super.impl.send(var1);
  114.             } finally {
  115.                if (var2 != var18) {
  116.                   super.impl.setTTL(var18);
  117.                }
  118.  
  119.             }
  120.          }
  121.  
  122.       }
  123.    }
  124. }
  125.