java网络编程2—流

java的I/O建立在流(stream)之上,输入流读入数据,输出流写入数据。不同的流类会读/写某个特定的数据源,如

  • java.io.FileInputStream
  • sun.net.TelnetOutputStream

输出流

java的最基本的输出流是java.io.OutputStream:

public abstract class OutputStream

这个类提供了写入数据所需要的基本方法。这些方法包括

public abstract void write(int b) throws IOException
public void write(byte[] data) throws IOException
public void write(byte[] data,int offset,int length) throws IOException
public void flush() throws IOException
public void close() throws IOException

OutputStream的基本方法是write(int b).这个方法接受一个0-255之间的整数作为参数,将相应的字节写入到输出流中

例如:字符生成器协议定义了一个发送ASCII码的文本服务器,这个协议最流行的变体是发送72个字符的文本行,其中包含可显示的ASCII码(可显示的ASCII码字符是33到126之间的字符,不包含各种空白符和控制字符)

预备知识:java中的方法调用

方法一、被调用方法声明为static ,可以在其他方法中直接调用(内部类)

方法二、被调用方法,没被static修饰,不是静态方法。调用时需要通过类的实例化进行调用(内部类)

方法三、调用外部的类的方法,通过类的实例化进行调用

下面是示例代码:

public static void generateCharacters(OutputStream out) throws  IOException
    {
        int firstPrintableCharacter=33;
        int numberOfPrintableCharacter=94;
        int numberOfCharactersPerline=72;

        int start=firstPrintableCharacter;
        while (true) {
            for(int i=start;i<start+numberOfCharactersPerline;i++)
            {
                out.write((i-firstPrintableCharacter)%numberOfCharactersPerline+firstPrintableCharacter);
            }
            out.write('\r');
            out.write('\n');
            start=(((start+1)-firstPrintableCharacter)%numberOfCharactersPerline+firstPrintableCharacter);
        }
    }

一次写入一个字节的效率不高,所以如果有多字节要发送,则一次全部发送是一个好主意,主要是使用write(byte[] data)


暂停更新,发现现阶段学习有点不对应

猜你喜欢

转载自blog.csdn.net/code_ac/article/details/74331603
今日推荐