- 3
- 0
- 约7.77千字
- 约 49页
- 2017-02-09 发布于江苏
- 举报
套接字与数据流演示文件修改版
4.2.1 FileStream类 2. 读文件 在获取FileStream实例之后,可利用FileStream对象的Read方法读取文件中的数据。该方法用于从流中读取字节块并将该数据写入给定字节数组中。其语法形式为: public override int Read(byte[] array,int offset, int count) array : 存储从文件流中读取的数据。 offset : array字节数组中开始写入数据的下标,一般为0。 size : 要从文件流中读出字节的大小 返回值: 从FileStream中读取的字节数。 【例4-2】利用FileStream的Read方法从一个文本文件中读取内容并显示在屏幕上。 4.2.1 FileStream类 3. 写文件 Stream类及其所有子类都提供了Write方法,FileStream类也不例外。该方法可将字节数组写入流。语法形式为: public override void Write ( byte[] buffer, //包含要写入流的数据 int offset, // buffer中开始写入数据的位置 int size //要写入流的字节数 ) 【例4-3】利用FileStream的Write方法向文本文件中追加数据。 4.2.2 MemoryStream类 MemoryStream类表示的是保存在内存中的数据流。由内存流封装的数据可以在内存中直接访问。 MemoryStream类的构造函数具有多种重载形式,常用的构造函数有: (1)MemoryStream () 该构造函数初始分配的容量大小为0,随着数据的不断写入容量可以不断扩展。 (2)MemoryStream (Byte[]) 该构造函数获取的MemoryStream实例根据Byte[]字节数组进行初始化,并且实例容量大小固定即为字节数组的长度。由于实例的容量不能扩展,该构造函数一般用于数据不发生变化的场合。 4.2.2 MemoryStream类 String testdata = 测试数据; char[] chars = testdata.ToCharArray(); Byte[] bytes = new Byte[encoder.GetByteCount(chars, 0, chars.Length, true)]; MemoryStream mem = new MemoryStream(bytes); (3)MemoryStream (int capacity) 通过该构造函数创建初始容量大小为capacity的实例,并且实例容量大小可扩展。 【例4-4】利用MemoryStream暂存数据。 4.2.3 网络流 在System.Net.Sockets名称空间中有一个NetworkStream类,用于通过网络套接字发送和接收数据。 NetworkStream类支持对网络数据的同步或异步访问,它可被视为在数据来源端和接收端之间架设了一个数据通道. 只用于面向连接的数据传输 写入操作是指从来源端内存缓冲区到网络上的数据传输; 读取操作是从网络上到接收端内存缓冲区(如字节数组)的数据传输。 4.2.3 网络流(续) 4.2.3 网络流(续) NetworkStream的用法: 1、构造NetworkStream: (1)利用TcpClient获取网络流对象,例如: TcpClient client=new TcpClient(); client.Connect(, 51888); NetworkStream networkStream = client.GetStream(); (2)利用Socket获取网络流对象,例如: NetworkStream myNetworkStream = new NetworkStream(mySocket); * * backlog 挂起连接队列的最大长度。 如果接收了一个客户端请求,listen方法会自动把该请求插入请求队列, 然后继续监听下一个请求, 当TcpListener接收的请求个数超过请求队列的最大长度时, 等待接收连接请求的远程主机将会产生异常。 * addressFamily 参数指定 Socket 使用的寻址方案,socketType 参数指定 Socket 的类型,protocolType 参数指定 Socket 使用的协议。 第4章 套接字与数据流 4.1 套接字 4.1.1 面向连接的套接字 4.1.2 无连接的套接
原创力文档

文档评论(0)