OSDN Git Service

2003-11-25 Michael Koch <konqueror@gmx.de>
authormkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 24 Nov 2003 23:00:07 +0000 (23:00 +0000)
committermkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 24 Nov 2003 23:00:07 +0000 (23:00 +0000)
* java/net/DatagramSocket.java
(DatagramSocket): Move binding code to bind(), simplify constructors.
* java/net/MulticastSocket.java
(MulticastSocket): Call parent constructor with null argument,
bind socket after setReuseAddress is called, simplify constructors.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@73902 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/java/net/DatagramSocket.java
libjava/java/net/MulticastSocket.java

index f8a678f..9f521ef 100644 (file)
@@ -1,3 +1,11 @@
+2003-11-25  Michael Koch  <konqueror@gmx.de>
+
+       * java/net/DatagramSocket.java
+       (DatagramSocket): Move binding code to bind(), simplify constructors.
+       * java/net/MulticastSocket.java
+       (MulticastSocket): Call parent constructor with null argument,
+       bind socket after setReuseAddress is called, simplify constructors.
+
 2003-11-24  Michael Koch  <konqueror@gmx.de>
 
        * javax/swing/BoxLayout.java
index 1d89d68..5934445 100644 (file)
@@ -138,21 +138,32 @@ public class DatagramSocket
    * the specified local port and address.
    *
    * @param port The local port number to bind to.
-   * @param laddr The local address to bind to.
+   * @param addr The local address to bind to.
    *
    * @exception SecurityException If a security manager exists and its
    * checkListen method doesn't allow the operation.
    * @exception SocketException If an error occurs.
    */
-  public DatagramSocket(int port, InetAddress laddr) throws SocketException
+  public DatagramSocket(int port, InetAddress addr) throws SocketException
   {
-    if (port < 0 || port > 65535)
-      throw new IllegalArgumentException("Invalid port: " + port);
-
-    SecurityManager s = System.getSecurityManager();
-    if (s != null)
-      s.checkListen(port);
+    this(new InetSocketAddress(addr, port));
+  }
 
+  /**
+   * Initializes a new instance of <code>DatagramSocket</code> that binds to 
+   * the specified local port and address.
+   *
+   * @param port The local port number to bind to.
+   * @param laddr The local address to bind to.
+   *
+   * @exception SecurityException If a security manager exists and its
+   * <code>checkListen</code> method doesn't allow the operation.
+   * @exception SocketException If an error occurs.
+   *
+   * @since 1.4
+   */
+  public DatagramSocket (SocketAddress address) throws SocketException
+  {
     String propVal = System.getProperty("impl.prefix");
     if (propVal == null || propVal.equals(""))
       impl = new PlainDatagramSocketImpl();
@@ -170,48 +181,45 @@ public class DatagramSocket
        }
     impl.create();
 
-    if (laddr == null)
-      laddr = InetAddress.ANY_IF;
+    if (address == null)
+      return;
+
+    if (! (address instanceof InetSocketAddress))
+      throw new SocketException("unsupported address type");
+
+    InetAddress addr = ((InetSocketAddress) address).getAddress();
+    int port = ((InetSocketAddress) address).getPort();
+
+    if (port < 0 || port > 65535)
+      throw new IllegalArgumentException("Invalid port: " + port);
+
+    SecurityManager s = System.getSecurityManager();
+    if (s != null)
+      s.checkListen(port);
+
+    if (addr == null)
+      addr = InetAddress.ANY_IF;
     
     try
       {
-        impl.bind (port, laddr);
+        impl.bind(port, addr);
       }
     catch (SocketException exception)
       {
-        impl.close ();
+        impl.close();
         throw exception;
       }
     catch (RuntimeException exception)
       {
-        impl.close ();
+        impl.close();
         throw exception;
       }
     catch (Error error)
       {
-        impl.close ();
+        impl.close();
         throw error;
       }
   }
-
-  /**
-   * Initializes a new instance of <code>DatagramSocket</code> that binds to 
-   * the specified local port and address.
-   *
-   * @param port The local port number to bind to.
-   * @param laddr The local address to bind to.
-   *
-   * @exception SecurityException If a security manager exists and its
-   * <code>checkListen</code> method doesn't allow the operation.
-   * @exception SocketException If an error occurs.
-   *
-   * @since 1.4
-   */
-  public DatagramSocket (SocketAddress address) throws SocketException
-  {
-    this (((InetSocketAddress) address).getPort (),
-          ((InetSocketAddress) address).getAddress ());
-  }
   
   /**
    * Closes this datagram socket.
index 1b7b422..097d52e 100644 (file)
@@ -80,8 +80,7 @@ public class MulticastSocket extends DatagramSocket
    */
   public MulticastSocket() throws IOException
   {
-    super(0, null);
-    setReuseAddress (true);
+    this(new InetSocketAddress(0));
   }
 
   /**
@@ -95,8 +94,7 @@ public class MulticastSocket extends DatagramSocket
    */
   public MulticastSocket(int port) throws IOException
   {
-    super(port, null);
-    setReuseAddress (true);
+    this(new InetSocketAddress(port));
   }
 
   /**
@@ -112,8 +110,10 @@ public class MulticastSocket extends DatagramSocket
    */
   public MulticastSocket(SocketAddress address) throws IOException
   {
-    super(address);
-    setReuseAddress (true);
+    super((SocketAddress) null);
+    setReuseAddress(true);
+    if (address != null)
+      bind(address);
   }
   
   /**