001 /*
002 * Copyright 2001-2005 The Apache Software Foundation
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.apache.commons.net;
017
018 import java.io.IOException;
019 import java.net.InetAddress;
020 import java.net.ServerSocket;
021 import java.net.Socket;
022 import java.net.UnknownHostException;
023
024 /***
025 * The SocketFactory interface provides a means for the programmer to
026 * control the creation of sockets and provide his own Socket
027 * implementations for use by all classes derived from
028 * {@link org.apache.commons.net.SocketClient}.
029 * This allows you to provide your own Socket implementations and
030 * to perform security checks or browser capability requests before
031 * creating a Socket.
032 * <p>
033 * <p>
034 * @author Daniel F. Savarese
035 * @see DefaultSocketFactory
036 ***/
037
038 public interface SocketFactory
039 {
040
041 /***
042 * Creates a Socket connected to the given host and port.
043 * <p>
044 * @param host The hostname to connect to.
045 * @param port The port to connect to.
046 * @return A Socket connected to the given host and port.
047 * @exception UnknownHostException If the hostname cannot be resolved.
048 * @exception IOException If an I/O error occurs while creating the Socket.
049 ***/
050 public Socket createSocket(String host, int port)
051 throws UnknownHostException, IOException;
052
053
054 /***
055 * Creates a Socket connected to the given host and port.
056 * <p>
057 * @param address The address of the host to connect to.
058 * @param port The port to connect to.
059 * @return A Socket connected to the given host and port.
060 * @exception IOException If an I/O error occurs while creating the Socket.
061 ***/
062 public Socket createSocket(InetAddress address, int port)
063 throws IOException;
064
065
066 /***
067 * Creates a Socket connected to the given host and port and
068 * originating from the specified local address and port.
069 * <p>
070 * @param host The hostname to connect to.
071 * @param port The port to connect to.
072 * @param localAddr The local address to use.
073 * @param localPort The local port to use.
074 * @return A Socket connected to the given host and port.
075 * @exception UnknownHostException If the hostname cannot be resolved.
076 * @exception IOException If an I/O error occurs while creating the Socket.
077 ***/
078 public Socket createSocket(String host, int port, InetAddress localAddr,
079 int localPort)
080 throws UnknownHostException, IOException;
081
082 /***
083 * Creates a Socket connected to the given host and port and
084 * originating from the specified local address and port.
085 * <p>
086 * @param address The address of the host to connect to.
087 * @param port The port to connect to.
088 * @param localAddr The local address to use.
089 * @param localPort The local port to use.
090 * @return A Socket connected to the given host and port.
091 * @exception IOException If an I/O error occurs while creating the Socket.
092 ***/
093 public Socket createSocket(InetAddress address, int port,
094 InetAddress localAddr, int localPort)
095 throws IOException;
096
097 /***
098 * Creates a ServerSocket bound to a specified port. A port
099 * of 0 will create the ServerSocket on a system-determined free port.
100 * <p>
101 * @param port The port on which to listen, or 0 to use any free port.
102 * @return A ServerSocket that will listen on a specified port.
103 * @exception IOException If an I/O error occurs while creating
104 * the ServerSocket.
105 ***/
106 public ServerSocket createServerSocket(int port) throws IOException;
107
108 /***
109 * Creates a ServerSocket bound to a specified port with a given
110 * maximum queue length for incoming connections. A port of 0 will
111 * create the ServerSocket on a system-determined free port.
112 * <p>
113 * @param port The port on which to listen, or 0 to use any free port.
114 * @param backlog The maximum length of the queue for incoming connections.
115 * @return A ServerSocket that will listen on a specified port.
116 * @exception IOException If an I/O error occurs while creating
117 * the ServerSocket.
118 ***/
119 public ServerSocket createServerSocket(int port, int backlog)
120 throws IOException;
121
122 /***
123 * Creates a ServerSocket bound to a specified port on a given local
124 * address with a given maximum queue length for incoming connections.
125 * A port of 0 will
126 * create the ServerSocket on a system-determined free port.
127 * <p>
128 * @param port The port on which to listen, or 0 to use any free port.
129 * @param backlog The maximum length of the queue for incoming connections.
130 * @param bindAddr The local address to which the ServerSocket should bind.
131 * @return A ServerSocket that will listen on a specified port.
132 * @exception IOException If an I/O error occurs while creating
133 * the ServerSocket.
134 ***/
135 public ServerSocket createServerSocket(int port, int backlog,
136 InetAddress bindAddr)
137 throws IOException;
138 }