1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18 package org.apache.commons.net;
19
20 import java.io.IOException;
21 import java.net.InetAddress;
22 import java.net.ServerSocket;
23 import java.net.Socket;
24 import java.net.UnknownHostException;
25
26 import javax.net.SocketFactory;
27
28 /***
29 * DefaultSocketFactory implements the SocketFactory interface by
30 * simply wrapping the java.net.Socket and java.net.ServerSocket
31 * constructors. It is the default SocketFactory used by
32 * {@link org.apache.commons.net.SocketClient}
33 * implementations.
34 * <p>
35 * <p>
36 * @author Daniel F. Savarese
37 * @see SocketFactory
38 * @see SocketClient
39 * @see SocketClient#setSocketFactory
40 ***/
41
42 public class DefaultSocketFactory extends SocketFactory
43 {
44
45 /***
46 * Creates a Socket connected to the given host and port.
47 * <p>
48 * @param host The hostname to connect to.
49 * @param port The port to connect to.
50 * @return A Socket connected to the given host and port.
51 * @exception UnknownHostException If the hostname cannot be resolved.
52 * @exception IOException If an I/O error occurs while creating the Socket.
53 ***/
54 @Override
55 public Socket createSocket(String host, int port)
56 throws UnknownHostException, IOException
57 {
58 return new Socket(host, port);
59 }
60
61 /***
62 * Creates a Socket connected to the given host and port.
63 * <p>
64 * @param address The address of the host to connect to.
65 * @param port The port to connect to.
66 * @return A Socket connected to the given host and port.
67 * @exception IOException If an I/O error occurs while creating the Socket.
68 ***/
69 @Override
70 public Socket createSocket(InetAddress address, int port)
71 throws IOException
72 {
73 return new Socket(address, port);
74 }
75
76 /***
77 * Creates a Socket connected to the given host and port and
78 * originating from the specified local address and port.
79 * <p>
80 * @param host The hostname to connect to.
81 * @param port The port to connect to.
82 * @param localAddr The local address to use.
83 * @param localPort The local port to use.
84 * @return A Socket connected to the given host and port.
85 * @exception UnknownHostException If the hostname cannot be resolved.
86 * @exception IOException If an I/O error occurs while creating the Socket.
87 ***/
88 @Override
89 public Socket createSocket(String host, int port,
90 InetAddress localAddr, int localPort)
91 throws UnknownHostException, IOException
92 {
93 return new Socket(host, port, localAddr, localPort);
94 }
95
96 /***
97 * Creates a Socket connected to the given host and port and
98 * originating from the specified local address and port.
99 * <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 }