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}