    001    /*
    002     * Licensed to the Apache Software Foundation (ASF) under one or more
    003     * contributor license agreements.  See the NOTICE file distributed with
    004     * this work for additional information regarding copyright ownership.
    005     * The ASF licenses this file to You under the Apache License, Version 2.0
    006     * (the "License"); you may not use this file except in compliance with
    007     * the License.  You may obtain a copy of the License at
    008     *
    009     *      http://www.apache.org/licenses/LICENSE-2.0
    010     *
    011     * Unless required by applicable law or agreed to in writing, software
    012     * distributed under the License is distributed on an "AS IS" BASIS,
    013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    014     * See the License for the specific language governing permissions and
    015     * limitations under the License.
    016     */
    017
    018    package org.apache.commons.net;
    019
    020    import java.io.IOException;
    021    import java.net.InetAddress;
    022    import java.net.ServerSocket;
    023    import java.net.Socket;
    024    import java.net.UnknownHostException;
    025
    026    import javax.net.SocketFactory;
    027
    028    /***
    029     * DefaultSocketFactory implements the SocketFactory interface by
    030     * simply wrapping the java.net.Socket and java.net.ServerSocket
    031     * constructors.  It is the default SocketFactory used by
    032     * {@link org.apache.commons.net.SocketClient}
    033     * implementations.
    034     * <p>
    035     * <p>
    036     * @author Daniel F. Savarese
    037     * @see SocketFactory
    038     * @see SocketClient
    039     * @see SocketClient#setSocketFactory
    040     ***/
    041
    042    public class DefaultSocketFactory extends SocketFactory
    043    {
    044
    045        /***
    046         * Creates a Socket connected to the given host and port.
    047         * <p>
    048         * @param host The hostname to connect to.
    049         * @param port The port to connect to.
    050         * @return A Socket connected to the given host and port.
    051         * @exception UnknownHostException  If the hostname cannot be resolved.
    052         * @exception IOException If an I/O error occurs while creating the Socket.
    053         ***/
    054        @Override
    055        public Socket createSocket(String host, int port)
    056        throws UnknownHostException, IOException
    057        {
    058            return new Socket(host, port);
    059        }
    060
    061        /***
    062         * Creates a Socket connected to the given host and port.
    063         * <p>
    064         * @param address The address of the host to connect to.
    065         * @param port The port to connect to.
    066         * @return A Socket connected to the given host and port.
    067         * @exception IOException If an I/O error occurs while creating the Socket.
    068         ***/
    069        @Override
    070        public Socket createSocket(InetAddress address, int port)
    071        throws IOException
    072        {
    073            return new Socket(address, port);
    074        }
    075
    076        /***
    077         * Creates a Socket connected to the given host and port and
    078         * originating from the specified local address and port.
    079         * <p>
    080         * @param host The hostname to connect to.
    081         * @param port The port to connect to.
    082         * @param localAddr  The local address to use.
    083         * @param localPort  The local port to use.
    084         * @return A Socket connected to the given host and port.
    085         * @exception UnknownHostException  If the hostname cannot be resolved.
    086         * @exception IOException If an I/O error occurs while creating the Socket.
    087         ***/
    088        @Override
    089        public Socket createSocket(String host, int port,
    090                                   InetAddress localAddr, int localPort)
    091        throws UnknownHostException, IOException
    092        {
    093            return new Socket(host, port, localAddr, localPort);
    094        }
    095
    096        /***
    097         * Creates a Socket connected to the given host and port and
    098         * originating from the specified local address and port.
    099         * <p>
    100         * @param address The address of the host to connect to.
    101         * @param port The port to connect to.
    102         * @param localAddr  The local address to use.
    103         * @param localPort  The local port to use.
    104         * @return A Socket connected to the given host and port.
    105         * @exception IOException If an I/O error occurs while creating the Socket.
    106         ***/
    107        @Override
    108        public Socket createSocket(InetAddress address, int port,
    109                                   InetAddress localAddr, int localPort)
    110        throws IOException
    111        {
    112            return new Socket(address, port, localAddr, localPort);
    113        }
    114
    115        /***
    116         * Creates a ServerSocket bound to a specified port.  A port
    117         * of 0 will create the ServerSocket on a system-determined free port.
    118         * <p>
    119         * @param port  The port on which to listen, or 0 to use any free port.
    120         * @return A ServerSocket that will listen on a specified port.
    121         * @exception IOException If an I/O error occurs while creating
    122         *                        the ServerSocket.
    123         ***/
    124        public ServerSocket createServerSocket(int port) throws IOException
    125        {
    126            return new ServerSocket(port);
    127        }
    128
    129        /***
    130         * Creates a ServerSocket bound to a specified port with a given
    131         * maximum queue length for incoming connections.  A port of 0 will
    132         * create the ServerSocket on a system-determined free port.
    133         * <p>
    134         * @param port  The port on which to listen, or 0 to use any free port.
    135         * @param backlog  The maximum length of the queue for incoming connections.
    136         * @return A ServerSocket that will listen on a specified port.
    137         * @exception IOException If an I/O error occurs while creating
    138         *                        the ServerSocket.
    139         ***/
    140        public ServerSocket createServerSocket(int port, int backlog)
    141        throws IOException
    142        {
    143            return new ServerSocket(port, backlog);
    144        }
    145
    146        /***
    147         * Creates a ServerSocket bound to a specified port on a given local
    148         * address with a given maximum queue length for incoming connections.
    149         * A port of 0 will
    150         * create the ServerSocket on a system-determined free port.
    151         * <p>
    152         * @param port  The port on which to listen, or 0 to use any free port.
    153         * @param backlog  The maximum length of the queue for incoming connections.
    154         * @param bindAddr  The local address to which the ServerSocket should bind.
    155         * @return A ServerSocket that will listen on a specified port.
    156         * @exception IOException If an I/O error occurs while creating
    157         *                        the ServerSocket.
    158         ***/
    159        public ServerSocket createServerSocket(int port, int backlog,
    160                                               InetAddress bindAddr)
    161        throws IOException
    162        {
    163            return new ServerSocket(port, backlog, bindAddr);
    164        }
    165    }