telnetoutputstream.java

来自「apache推出的net包」· Java 代码 · 共 146 行

JAVA
146
字号
/* * Copyright 2001-2005 The Apache Software Foundation * * Licensed 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. */package org.apache.commons.net.telnet;import java.io.IOException;import java.io.OutputStream;/*** * * <p> * * <p> * <p> * @author Daniel F. Savarese ***/final class TelnetOutputStream extends OutputStream{    private TelnetClient __client;    private boolean __convertCRtoCRLF = true;    private boolean __lastWasCR = false;    TelnetOutputStream(TelnetClient client)    {        __client = client;    }    /***     * Writes a byte to the stream.     * <p>     * @param ch The byte to write.     * @exception IOException If an error occurs while writing to the underlying     *            stream.     ***/    public void write(int ch) throws IOException    {        synchronized (__client)        {            ch &= 0xff;            if (__client._requestedWont(TelnetOption.BINARY))            {                if (__lastWasCR)                {                    if (__convertCRtoCRLF)                    {                        __client._sendByte('\n');                        if (ch == '\n')                        {                            __lastWasCR = false;                            return ;                        }                    }                    else if (ch != '\n')                        __client._sendByte('\0');                }                __lastWasCR = false;                switch (ch)                {                case '\r':                    __client._sendByte('\r');                    __lastWasCR = true;                    break;                case TelnetCommand.IAC:                    __client._sendByte(TelnetCommand.IAC);                    __client._sendByte(TelnetCommand.IAC);                    break;                default:                    __client._sendByte(ch);                    break;                }            }            else if (ch == TelnetCommand.IAC)            {                __client._sendByte(ch);                __client._sendByte(TelnetCommand.IAC);            }            else                __client._sendByte(ch);        }    }    /***     * Writes a byte array to the stream.     * <p>     * @param buffer  The byte array to write.     * @exception IOException If an error occurs while writing to the underlying     *            stream.     ***/    public void write(byte buffer[]) throws IOException    {        write(buffer, 0, buffer.length);    }    /***     * Writes a number of bytes from a byte array to the stream starting from     * a given offset.     * <p>     * @param buffer  The byte array to write.     * @param offset  The offset into the array at which to start copying data.     * @param length  The number of bytes to write.     * @exception IOException If an error occurs while writing to the underlying     *            stream.     ***/    public void write(byte buffer[], int offset, int length) throws IOException    {        synchronized (__client)        {            while (length-- > 0)                write(buffer[offset++]);        }    }    /*** Flushes the stream. ***/    public void flush() throws IOException    {        __client._flushOutputStream();    }    /*** Closes the stream. ***/    public void close() throws IOException    {        __client._closeOutputStream();    }}

⌨️ 快捷键说明

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