defaultprotocolsocketfactory.java

来自「Light in the box 抓取程序。 使用HttpClient」· Java 代码 · 共 158 行

JAVA
158
字号
/* * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//httpclient/src/java/org/apache/commons/httpclient/protocol/DefaultProtocolSocketFactory.java,v 1.10 2004/05/13 04:01:22 mbecke Exp $ * $Revision: 480424 $ * $Date: 2006-11-29 06:56:49 +0100 (Wed, 29 Nov 2006) $ * * ==================================================================== * *  Licensed to the Apache Software Foundation (ASF) under one or more *  contributor license agreements.  See the NOTICE file distributed with *  this work for additional information regarding copyright ownership. *  The ASF licenses this file to You under the Apache License, Version 2.0 *  (the "License"); you may not use this file except in compliance with *  the License.  You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * *  Unless required by applicable law or agreed to in writing, software *  distributed under the License is distributed on an "AS IS" BASIS, *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *  See the License for the specific language governing permissions and *  limitations under the License. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation.  For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * */package org.apache.commons.httpclient.protocol;import java.io.IOException;import java.net.InetAddress;import java.net.Socket;import java.net.UnknownHostException;import org.apache.commons.httpclient.ConnectTimeoutException;import org.apache.commons.httpclient.params.HttpConnectionParams;/** * The default class for creating protocol sockets.  This class just uses the * {@link java.net.Socket socket} constructors. *  * @author Michael Becke *  * @since 2.0 */public class DefaultProtocolSocketFactory implements ProtocolSocketFactory {    /**     * The factory singleton.     */    private static final DefaultProtocolSocketFactory factory = new DefaultProtocolSocketFactory();        /**     * Gets an singleton instance of the DefaultProtocolSocketFactory.     * @return a DefaultProtocolSocketFactory     */    static DefaultProtocolSocketFactory getSocketFactory() {        return factory;    }        /**     * Constructor for DefaultProtocolSocketFactory.     */    public DefaultProtocolSocketFactory() {        super();    }    /**     * @see #createSocket(java.lang.String,int,java.net.InetAddress,int)     */    public Socket createSocket(        String host,        int port,        InetAddress localAddress,        int localPort    ) throws IOException, UnknownHostException {        return new Socket(host, port, localAddress, localPort);    }        /**     * Attempts to get a new socket connection to the given host within the given time limit.     * <p>     * This method employs several techniques to circumvent the limitations of older JREs that      * do not support connect timeout. When running in JRE 1.4 or above reflection is used to      * call Socket#connect(SocketAddress endpoint, int timeout) method. When executing in older      * JREs a controller thread is executed. The controller thread attempts to create a new socket     * within the given limit of time. If socket constructor does not return until the timeout      * expires, the controller terminates and throws an {@link ConnectTimeoutException}     * </p>     *       * @param host the host name/IP     * @param port the port on the host     * @param localAddress the local host name/IP to bind the socket to     * @param localPort the port on the local machine     * @param params {@link HttpConnectionParams Http connection parameters}     *      * @return Socket a new socket     *      * @throws IOException if an I/O error occurs while creating the socket     * @throws UnknownHostException if the IP address of the host cannot be     * determined     * @throws ConnectTimeoutException if socket cannot be connected within the     *  given time limit     *      * @since 3.0     */    public Socket createSocket(        final String host,        final int port,        final InetAddress localAddress,        final int localPort,        final HttpConnectionParams params    ) throws IOException, UnknownHostException, ConnectTimeoutException {        if (params == null) {            throw new IllegalArgumentException("Parameters may not be null");        }        int timeout = params.getConnectionTimeout();        if (timeout == 0) {            return createSocket(host, port, localAddress, localPort);        } else {            // To be eventually deprecated when migrated to Java 1.4 or above            Socket socket = ReflectionSocketFactory.createSocket(                "javax.net.SocketFactory", host, port, localAddress, localPort, timeout);            if (socket == null) {                socket = ControllerThreadSocketFactory.createSocket(                    this, host, port, localAddress, localPort, timeout);            }            return socket;        }    }    /**     * @see ProtocolSocketFactory#createSocket(java.lang.String,int)     */    public Socket createSocket(String host, int port)        throws IOException, UnknownHostException {        return new Socket(host, port);    }    /**     * All instances of DefaultProtocolSocketFactory are the same.     */    public boolean equals(Object obj) {        return ((obj != null) && obj.getClass().equals(getClass()));    }    /**     * All instances of DefaultProtocolSocketFactory have the same hash code.     */    public int hashCode() {        return getClass().hashCode();    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?