diff options
Diffstat (limited to 'libjava/java/net/DatagramSocket.java')
| -rw-r--r-- | libjava/java/net/DatagramSocket.java | 74 |
1 files changed, 41 insertions, 33 deletions
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 <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. |
