    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.chargen;
    019
    020    import java.io.InputStream;
    021
    022    import org.apache.commons.net.SocketClient;
    023
    024    /***
    025     * The CharGenTCPClient class is a TCP implementation of a client for the
    026     * character generator protocol described in RFC 864.  It can also be
    027     * used for Systat (RFC 866), Quote of the Day (RFC 865), and netstat
    028     * (port 15).  All of these protocols involve connecting to the appropriate
    029     * port, and reading data from an input stream.  The chargen protocol
    030     * actually sends data until the receiving end closes the connection.  All
    031     * of the others send only a fixed amount of data and then close the
    032     * connection.
    033     * <p>
    034     * To use the CharGenTCPClient class, just establish a
    035     * connection with
    036     * {@link org.apache.commons.net.SocketClient#connect  connect }
    037     * and call {@link #getInputStream  getInputStream() } to access
    038     * the data.  Don't close the input stream when you're done with it.  Rather,
    039     * call {@link org.apache.commons.net.SocketClient#disconnect  disconnect }
    040     * to clean up properly.
    041     * <p>
    042     * <p>
    043     * @see CharGenUDPClient
    044     ***/
    045
    046    public final class CharGenTCPClient extends SocketClient
    047    {
    048        /*** The systat port value of 11 according to RFC 866. ***/
    049        public static final int SYSTAT_PORT = 11;
    050        /*** The netstat port value of 19. ***/
    051        public static final int NETSTAT_PORT = 15;
    052        /*** The quote of the day port value of 17 according to RFC 865. ***/
    053        public static final int QUOTE_OF_DAY_PORT = 17;
    054        /*** The character generator port value of 19 according to RFC 864. ***/
    055        public static final int CHARGEN_PORT = 19;
    056        /*** The default chargen port.  It is set to 19 according to RFC 864. ***/
    057        public static final int DEFAULT_PORT = 19;
    058
    059        /***
    060         * The default constructor for CharGenTCPClient.  It merely sets the
    061         * default port to <code> DEFAULT_PORT </code>.
    062         ***/
    063        public CharGenTCPClient ()
    064        {
    065            setDefaultPort(DEFAULT_PORT);
    066        }
    067
    068        /***
    069         * Returns an InputStream from which the server generated data can be
    070         * read.  You should NOT close the InputStream when you're finished
    071         * reading from it.  Rather, you should call
    072         * {@link org.apache.commons.net.SocketClient#disconnect  disconnect }
    073         * to clean up properly.
    074         * <p>
    075         * @return An InputStream from which the server generated data can be read.
    076         ***/
    077        public InputStream getInputStream()
    078        {
    079            return _input_;
    080        }
    081    }
    082
    083
    084
    085