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