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
018package org.apache.commons.net;
019
020import java.io.IOException;
021import java.net.InetAddress;
022import java.net.ServerSocket;
023import java.net.Socket;
024import java.net.UnknownHostException;
025
026import 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 * @see SocketFactory
037 * @see SocketClient
038 * @see SocketClient#setSocketFactory
039 ***/
040
041public class DefaultSocketFactory extends SocketFactory
042{
043
044    /***
045     * Creates a Socket connected to the given host and port.
046     * <p>
047     * @param host The hostname to connect to.
048     * @param port The port to connect to.
049     * @return A Socket connected to the given host and port.
050     * @exception UnknownHostException  If the hostname cannot be resolved.
051     * @exception IOException If an I/O error occurs while creating the Socket.
052     ***/
053    @Override
054    public Socket createSocket(String host, int port)
055    throws UnknownHostException, IOException
056    {
057        return new Socket(host, port);
058    }
059
060    /***
061     * Creates a Socket connected to the given host and port.
062     * <p>
063     * @param address The address of the host to connect to.
064     * @param port The port to connect to.
065     * @return A Socket connected to the given host and port.
066     * @exception IOException If an I/O error occurs while creating the Socket.
067     ***/
068    @Override
069    public Socket createSocket(InetAddress address, int port)
070    throws IOException
071    {
072        return new Socket(address, port);
073    }
074
075    /***
076     * Creates a Socket connected to the given host and port and
077     * originating from the specified local address and port.
078     * <p>
079     * @param host The hostname to connect to.
080     * @param port The port to connect to.
081     * @param localAddr  The local address to use.
082     * @param localPort  The local port to use.
083     * @return A Socket connected to the given host and port.
084     * @exception UnknownHostException  If the hostname cannot be resolved.
085     * @exception IOException If an I/O error occurs while creating the Socket.
086     ***/
087    @Override
088    public Socket createSocket(String host, int port,
089                               InetAddress localAddr, int localPort)
090    throws UnknownHostException, IOException
091    {
092        return new Socket(host, port, localAddr, localPort);
093    }
094
095    /***
096     * Creates a Socket connected to the given host and port and
097     * originating from the specified local address and port.
098     * <p>
099     * @param address The address of the host to connect to.
100     * @param port The port to connect to.
101     * @param localAddr  The local address to use.
102     * @param localPort  The local port to use.
103     * @return A Socket connected to the given host and port.
104     * @exception IOException If an I/O error occurs while creating the Socket.
105     ***/
106    @Override
107    public Socket createSocket(InetAddress address, int port,
108                               InetAddress localAddr, int localPort)
109    throws IOException
110    {
111        return new Socket(address, port, localAddr, localPort);
112    }
113
114    /***
115     * Creates a ServerSocket bound to a specified port.  A port
116     * of 0 will create the ServerSocket on a system-determined free port.
117     * <p>
118     * @param port  The port on which to listen, or 0 to use any free port.
119     * @return A ServerSocket that will listen on a specified port.
120     * @exception IOException If an I/O error occurs while creating
121     *                        the ServerSocket.
122     ***/
123    public ServerSocket createServerSocket(int port) throws IOException
124    {
125        return new ServerSocket(port);
126    }
127
128    /***
129     * Creates a ServerSocket bound to a specified port with a given
130     * maximum queue length for incoming connections.  A port of 0 will
131     * create the ServerSocket on a system-determined free port.
132     * <p>
133     * @param port  The port on which to listen, or 0 to use any free port.
134     * @param backlog  The maximum length of the queue for incoming connections.
135     * @return A ServerSocket that will listen on a specified port.
136     * @exception IOException If an I/O error occurs while creating
137     *                        the ServerSocket.
138     ***/
139    public ServerSocket createServerSocket(int port, int backlog)
140    throws IOException
141    {
142        return new ServerSocket(port, backlog);
143    }
144
145    /***
146     * Creates a ServerSocket bound to a specified port on a given local
147     * address with a given maximum queue length for incoming connections.
148     * A port of 0 will
149     * create the ServerSocket on a system-determined free port.
150     * <p>
151     * @param port  The port on which to listen, or 0 to use any free port.
152     * @param backlog  The maximum length of the queue for incoming connections.
153     * @param bindAddr  The local address to which the ServerSocket should bind.
154     * @return A ServerSocket that will listen on a specified port.
155     * @exception IOException If an I/O error occurs while creating
156     *                        the ServerSocket.
157     ***/
158    public ServerSocket createServerSocket(int port, int backlog,
159                                           InetAddress bindAddr)
160    throws IOException
161    {
162        return new ServerSocket(port, backlog, bindAddr);
163    }
164}