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