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 * @author Daniel F. Savarese 037 * @see SocketFactory 038 * @see SocketClient 039 * @see SocketClient#setSocketFactory 040 ***/ 041 042 public class DefaultSocketFactory extends SocketFactory 043 { 044 045 /*** 046 * Creates a Socket connected to the given host and port. 047 * <p> 048 * @param host The hostname to connect to. 049 * @param port The port to connect to. 050 * @return A Socket connected to the given host and port. 051 * @exception UnknownHostException If the hostname cannot be resolved. 052 * @exception IOException If an I/O error occurs while creating the Socket. 053 ***/ 054 @Override 055 public Socket createSocket(String host, int port) 056 throws UnknownHostException, IOException 057 { 058 return new Socket(host, port); 059 } 060 061 /*** 062 * Creates a Socket connected to the given host and port. 063 * <p> 064 * @param address The address of the host to connect to. 065 * @param port The port to connect to. 066 * @return A Socket connected to the given host and port. 067 * @exception IOException If an I/O error occurs while creating the Socket. 068 ***/ 069 @Override 070 public Socket createSocket(InetAddress address, int port) 071 throws IOException 072 { 073 return new Socket(address, port); 074 } 075 076 /*** 077 * Creates a Socket connected to the given host and port and 078 * originating from the specified local address and port. 079 * <p> 080 * @param host The hostname to connect to. 081 * @param port The port to connect to. 082 * @param localAddr The local address to use. 083 * @param localPort The local port to use. 084 * @return A Socket connected to the given host and port. 085 * @exception UnknownHostException If the hostname cannot be resolved. 086 * @exception IOException If an I/O error occurs while creating the Socket. 087 ***/ 088 @Override 089 public Socket createSocket(String host, int port, 090 InetAddress localAddr, int localPort) 091 throws UnknownHostException, IOException 092 { 093 return new Socket(host, port, localAddr, localPort); 094 } 095 096 /*** 097 * Creates a Socket connected to the given host and port and 098 * originating from the specified local address and port. 099 * <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 }