c#基础: NetWorkStream类的主要属性
一、网络流
1. 最常用的方法 Read() Write() Flush()
1 NetworkStream netStream = new NetworkStream(mesock); 2 byte[] nyByte = new Byte[1024]; 3 // Read() : 4 netStream.Read(myByte, 0, myByte.Length); 5 // Write(): 6 netStream.Write(myByte, 0, myByte.Length); 7 netStream.Flush();
二、文本流
1. 文本编码格式:
ASCII(几乎支持所有协议) UTF8(支持SMTP协议、POP3协议, 支持汉字传输) BigEndianUnicode码(是双字节码,所以一般协议不用这个, 支持汉字传输)
<1> 向文件写文本流
1 StreamWrite sw = null; 2 sw = new StreamWrite("f:\\1.txt", false, System.Text.Encoding.UTF8); // 如文件不存在则创建,存在则打开,并且用新数据覆盖旧数据 3 sw.Write("写入的信息"); 4 sw.Close();
<2>打开文件时指定文件权限和编码格式
1 sw = new StreamWrite("f:\\1.txt", true, System.Text.Encoding.UTF8); // 如文件不存在则创建,存在则打开,并且新数据在旧数据后面
<3> 向网络写入文本
1 string data = "abcdefghijklmnopqrstuvwxyz"; 2 byte[] datas = System.Text.Encoding.UTF8.GETBytes(data); 3 NetworkStream netStream = new NetworkStream(mysock); 4 netStream.Write(myByte, 0, myByte.Length);
<4> 从文件读取文本
1 StreamReader sr = null; 2 sr = new StreamReader("f:\\1.txt", false, System.Text.Encoding.UTF8); 3 string data = sr.ReadToEnd(); 4 sr.Close();
<5> 从网络读取文本
1 string data = "abcdefghijklmnopqrstuvwxyz"; 2 byte[] datas = System.Text.Encoding.UTF8.GETBytes(data); 3 NetworkStream netStream = new NetworkStream(mysock); 4 netStream.Read(myByte, 0, myByte.Length);
三、 文件流(主要用于读写非文本文件)
<1> 将网络流数据写入文件
1 FileStream filestream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write); 2 int readNumber = 0; 3 bytep[] byte = new byte[8]; 4 while ( (readNumber = stream.Read(byte, 0, 8)) > 0) 5 { 6 filestream.Write(byte, 0, readNumber); 7 filestream.Flush(); 8 } 9 filestream.Close();
<2> 读文件并写入网络流
1 FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read); 2 int number = 0; 3 // 定义缓冲区 4 byte[] bb = new bytep8[]; 5 // 循环读文件 6 NetworkStream stream = new NetworkStream(newClient); 7 while ( (number=filestream.Read(bb, 0, 8)) != 0) 8 { 9 // 向客户端发送流 10 stream.Write(bb, 0, 8); 11 }