浅谈SOCKET字节流和字符流的区别

来源:互联网 发布:淘宝在线客服在哪里 编辑:程序博客网 时间:2024/06/08 13:29

字节流顾名思意是处理2进制的
字符流处理的字符集
网友回复:字节流就是流里的最小单位是byte,一个byte所包含的信息的-128到127. 仅此而已。
字符流就是流里的最小单位是char,一个char表示一个符号,如数字,字面,标点等等。要表示一个符号,就必须知道这个符号的编码方式。如ascii,utf-8, gb2312等等。就是考这些编码方式将符号编码之后在存入char变量中。
换个角度说,我们看一个字节流时,只关注每个字节是多大。但是在关注字符流时,我们需要从这个字符有多大,编码格式是什么,来看出这个字符表示一个什么符号。

流,字符流和字节流都是什么
 
流就是stream.   一个连续的字节队列。
 
流是程序输入或输出的一个连续的字节序列,设备(例如鼠标,键盘,磁盘,屏幕和打印机)的输入和输出都是用流来处理的。在C语言中,所有的流均以文件的形式出现---不一定是物理磁盘文件,还可以是对应与某个输入/输出源的逻辑文件
 
流(streams)在I/O系统中是一种I/O机制和功能,或者称为streams子系统。它本身并不是一个物理设备的概念。  
  引入流的目的:  
  传统的字符设备驱动程序框架有许多缺点,这表现在:  
  。内核与字符设备驱动程序间接口的抽象层次太高  
  。内核没有为字符设备提供可靠的缓冲区分配和管理功能  
  。许多系统对字符设备的界面是把数据看成是FIFO(先进先出)的字节流,因此没有识别消息边界,区分普通设备和控制信息,以及判定不同消息优先级的能力,也没有字节流流量控制  
  。在网络数据传输设备中这些问题更突出。网络中数据传输是基于消息或数据分组的。  
  流的概念:  
  用通讯中的术语来说,流是全双工的处理过程,它是内核中驱动程序和用户进程之间的数据传输通道。  
  从流的构造上来说,它由一个流头,一个流驱动程序尾,以及其间的零个或若干个可选模块构成   。流头是一个用户级接口,它允许用户应用程序通过系统调用接口来访问流。驱动程序尾与底层设备通信。在流的中间的模块是处理数据的。

转载自:http://fuzhong1983.blog.163.com/blog/static/168470520081111113125717/



-------------------------------------

字节(Byte)是计算机信息技术用于计量存储容量和传输容量的一种计量单位,一个字节等于8位二进制数

ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。如一个ASCII码就是一个字节