Java网络编程笔记1

2018-06-18 02:43:38来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

输出流

网络程序所作的很大一部分工作都是简单的输入和输出,Java的I/O建立于流之上。输入流读取数据,输出流写入数据。

Java的基本输出流类是java.io.OutputStream。

OutputStream的基本方法是write(int b)。该方法接收一个0~255之间的整数作为参数,将对应字节写入到输出流中。当使用write(int b)将int写入一个网络连接时,如果将一个超出0~255的int传入write(int b),将写入这个数的最低字节,其他3字节将被忽略。

字符生成器协议定义了一个发出ASCII文本的服务器。这个协议最流行的变体是发送72个字符的文本行,其中包含可显示的ASCII字符,是33~126之间的字符,不包含空白符合控制字符。

ASCII是一个7位字符集,所以每个字符都可作为单字节发送。因此,这个协议可以直接使用基本write()方法实现。

 1 public static void generateCharacters(OutputStream out) throws IOException
 2 {
 3     int firstPrintableCharacter = 33;
 4     int numberOfPrintbableCharacters = 94;
 5     int numberOfCharactersPerLine = 72;
 6     int start = firstPrintableCharacter;
 7     while(true)
 8     {
 9         for(int i =start;i<start+numberOfCharactersPerLine;i++)
10         {
11             out.write(((i-firstPrintableCharacter)%numberOfCharacers)+firstPrintbaleCharacter);
12         }
13         out.write('\r');
14         out.write('\n');
15         start = ((start+1)-firstPrintableCharacter)%numberOfPrintableCharacters+firstPrintableCharacter;
16     }
17 }                            

一次写入1个字节效率不高。大多数TCP/IP实现都会在某种程度上缓存数据,它们在内存中积累数据字节,只有积累到一定量的数据后,或者经过一定的时间后,才将所积累的数据发动到最终目的地。下面将整行打包在一个字节数组中,一次发送一行。

 1 public static void generateCharacters(OutputStream out) throws IOException
 2 {
 3     int firstPrintableCharacter = 33;
 4     int numberOfPrintableCharacters = 94;
 5     int numberOfCharactersPerLine = 72;
 6     
 7     int start = firstPrintableCharacter;
 8     byte[] line = new byte[numberOfCharactersPerLine+2];
 9     
10     while(true)
11     {
12         for(int i =start;i<start+numberOfCharactersPerLine;i++)
13         {
14             line[i-start] = (byte)((i-firstPrintableCharacter)%numberOfPrintableCharacters+firstPrintableCharacter);
15         }
16         line[72] = (byte)'\r';
17         line[73] = (byte)'\n';
18         out.write(line);
19         start = ((start + 1)-firstPrintableCharacter)%numberOfPrintableCharacters+firstPrintableCharacter;
20     }
21 }    

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Idea 快捷键大全【转】

下一篇:简述Shiro验证过程