From 473432eb026530ae681374368552bfe0579273b6 Mon Sep 17 00:00:00 2001 From: Michael Koch Date: Mon, 24 Nov 2003 23:00:07 +0000 Subject: 2003-11-25 Michael Koch * 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. From-SVN: r73902 --- libjava/java/net/DatagramSocket.java | 74 ++++++++++++++++++++---------------- 1 file changed, 41 insertions(+), 33 deletions(-) (limited to 'libjava/java/net/DatagramSocket.java') diff --git a/libjava/java/net/DatagramSocket.java b/libjava/java/net/DatagramSocket.java index 1d89d688401..59344455e27 100644 --- a/libjava/java/net/DatagramSocket.java +++ b/libjava/java/net/DatagramSocket.java @@ -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 DatagramSocket 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 + * checkListen 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 DatagramSocket 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 - * checkListen 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. -- cgit v1.2.3