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 * @see SocketFactory
037 * @see SocketClient
038 * @see SocketClient#setSocketFactory
039 ***/
040
041 public 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 }