C#网络编程之基础语法 网络流(NetworkStream) 文本流(Stream) 文件流(Filestream )

Socket 的创建。

// 创建负责监听的Socket
            // 第一个参数AddressFamily设置网络寻址协议,InterNetwork表示IPV4
            // 第二个参数SocketType设置数据传输方式(Socket类型),这个要根据第三个参数来设置,Stream此类型的 Socket 与单个对方主机进行通信,并且在通信开始之前需要远程主机连接
            // 第三个参数为UDP协议时,第二个参数就要为Dgram(报文)
        Socket socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

一。网络流

网络流(NetworkStream)用于传输数据,NetworkStream类用于网络访问的基础流,需要引用System.Net.Sockets 类 而 NetworkStream实现了通过网络套接字发送和接收数据的标准,并且NetworkStream支持网络流的的同步和异步访问。

NetworkStream构造方法有如下几种 如图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
常用属性如下:
在这里插入图片描述
NetworkStream常用方法如下:
在这里插入图片描述
在这里插入图片描述

二。文本流

文本流用于读写文本
文本流用于文本的读写。要谈文本,首先要了解的是文本编码。在网络编程中,常用的是ASCII、UTF8和 BigEndianUnicode码其中ASCII码最为常用,几乎所有协议都支持ASCII码,SMTP和POP3协议使用UTF8编码,但也支持ASCII码, BigEndianUnicod码是双字节码,一般协议不用该种编码作为命令码,因为双字节码在解码时较为繁琐,容易出 错。UTF8和 BigEndianUnicod编码支持汉字传输,其中UF8码使用起来较为方便,可以像使用ASCI码一样使用UTF8码。下面演示向文件中和向网络中写文本流:

●向文件写文本流
下列代码演示新建或打开(如果不存在,就新建一个文件;如果已经存在,则打开)
一个文件,然后向文件写文本数据,并且新数据代替旧数据。

  StreamWriter sw=null;
  sw=new StreamWriter( "e: \ltemp\. txt", false, System. Text. Encoding. UTF8);
  sw. Write("aaaaaaaaaaaaaaaaaaa");
  sw.close();

●向网络写入文本

string str="aaaaaaaaaaaaaaaaaaaaaaaaaaa";
byte [] myByte=System.Text.Encoding.UTF8.GetBytes(str);
NetworkStream netStream=new NetworkStream (mysock):
netStream. Write(myByte, 0, myByte.Length);

●从文件读取文本

StreamReader sr =null;
sr=new streamReader("e: \\temp laa. txt", System. Text. Encoding. UTF8);
string mystr=sr. ReadToEnd();
sr. close();

●从网络读取文本

 string str="aaaaaaaaaaaaa";
 byte [] myByte=System.Text.Encoding.UTF8.GetBytes(str);
 Networkstream netStream=new NetworkStream(mysock);
 netStream.Read(myByte,myByte.Length);

三。文件流

文件流用于读写文件

文件流主要用于读写非文本的文件。文件类型可以是各种各样的,无论是文本文件, 还是图片文件、压缩文件、可执行文件等等都可以用文件流实现读写功能。下例演示如何用文件流读写数据。

●将网络流数据写入文件
下列代码演示如何从网络流中读取数据并将内容写入文件,其中path代表文件路径, stream代表已经连接并且存在数据传输的网络流。

 Filestream filestream=new FileStream(path,FileMode.OpenorCreate, FileAccess.Write);
 int readNumber=0;
 byte[] bye=new byte[8];
 while( (readNumber=stream.Read(bye, 0, 8))>0)
 {
    filestream. Write(bye,o, readNumber);
    //刷新缓存
    filestream. Flush();
 }
 fileStream.Close();

●读文件并写入网络流
下列代码演示如何用文件流从文件读取数据,并将数据发送到网络流,其中path代表文件路径, stream代表已经连接并且存在数据传输的网络流,

  filestream=new FileStream(path, FileMode,Open, FileAccess. Read);
  int number;
 //定义缓冲区
  byte[] bb=new byte[8];
  //循环读文件
  NetworkStream stream=new NetworkStream(newclient);
  while( (number=filestream. Read(bb,0,8))!=0)
  {
 // 向客户端发送流
 stream. Write(bb,0,8);
 //刷新流
 stream.Flush();
 bb=new byte [8];
   }
 filestream. Close();
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值