+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
* 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();
}
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.