中国建设招标网是私人网站吗,小程序免费制作平台有赞,万网官网登录,wordpress去谷歌插件文章目录 一、NetworkStream类的基本概念1.1 NetworkStream类概述1.2 NetworkStream类属性1.3 NetworkStream类方法 二、NetworkStream的连接方式三、NetworkStream的传输模式四、NetworkStream类示例服务器端代码#xff1a;客户端代码#xff1a; 五、总结 在C#中#xff… 文章目录 一、NetworkStream类的基本概念1.1 NetworkStream类概述1.2 NetworkStream类属性1.3 NetworkStream类方法 二、NetworkStream的连接方式三、NetworkStream的传输模式四、NetworkStream类示例服务器端代码客户端代码 五、总结 在C#中网络编程通常涉及到使用Socket和NetworkStream类。NetworkStream类是System.Net.Sockets命名空间中的一部分它提供了对网络流进行读写操作的功能。本文将详细介绍NetworkStream类的基本概念、属性和方法并提供一个简单的示例。
一、NetworkStream类的基本概念
1.1 NetworkStream类概述
NetworkStream类是System.IO命名空间中Stream抽象类的子类用于在网络连接上提供同步的、双向的、基于字节的数据流。它提供了对网络连接的读写操作使得可以在两个网络应用程序之间传输数据。
1.2 NetworkStream类属性
1CanRead获取一个值表示是否可以读取网络流。
2CanWrite获取一个值表示是否可以写入网络流。
3CanSeek获取一个值表示是否可以seek定位网络流。
4Length获取网络流的长度即可以读取的数据量。
5Position获取或设置网络流的当前位置。
1.3 NetworkStream类方法
1Read(byte[] buffer, int offset, int count)从网络流中读取数据并存入缓冲区。
2Write(byte[] buffer, int offset, int count)向网络流中写入数据。
3Seek(long offset, SeekOrigin origin)在网络流中定位到一个特定的位置。
4SetLength(long value)设置网络流的长度。
5Flush刷新网络流确保所有缓冲区中的数据都被写入到网络连接中。
二、NetworkStream的连接方式
NetworkStream类通常与TcpClient类一起使用TcpClient用于建立与服务器的连接。一旦建立了连接就可以通过TcpClient的GetStream方法获取NetworkStream实例。
TcpClient client new TcpClient(host, port);
NetworkStream stream client.GetStream();三、NetworkStream的传输模式
NetworkStream类支持两种传输模式阻塞模式和非阻塞模式。
阻塞模式在阻塞模式下当网络流没有可用的数据时Read方法会阻塞当前线程直到数据到达或超时。非阻塞模式在非阻塞模式下Read方法在没有可用的数据时会返回0不会阻塞当前线程。
四、NetworkStream类示例
以下是一个简单的网络编程示例演示了如何使用NetworkStream类在两个客户端之间传输数据。
服务器端代码
using System;
using System.IO;
using System.Net.Sockets;
using System.Text;public class Server
{public static void Main(){// 创建一个TcpListener监听1234端口TcpListener listener new TcpListener(1234);listener.Start();Console.WriteLine(服务器启动等待客户端连接...);// 接受客户端连接TcpClient client listener.AcceptTcpClient();Console.WriteLine(客户端已连接。);// 使用NetworkStream读取数据NetworkStream stream client.GetStream();byte[] buffer new byte[1024];int bytesRead;// 读取客户端发送的数据while ((bytesRead stream.Read(buffer, 0, buffer.Length)) ! 0){byte[] result new byte[bytesRead];Array.Copy(buffer, 0, result, 0, bytesRead);string receivedData Encoding.UTF8.GetString(result);Console.WriteLine(收到客户端发送的数据 receivedData);}// 关闭连接client.Close();listener.Stop();Console.WriteLine(服务器已关闭。);}
}客户端代码
using System;
using System.IO;
using System.Net.Sockets;
using System.Text;public class Client
{public static void Main(){// 创建一个TcpClient连接到服务器TcpClient client new TcpClient(localhost, 1234);Console.WriteLine(客户端启动正在连接服务器...);// 使用NetworkStream写入数据NetworkStream stream client.GetStream();byte[] buffer new byte[1024];string message Hello, Server!;byte[] data Encoding.UTF8.GetBytes(message);// 向服务器发送数据stream.Write(data, 0, data.Length);Console.WriteLine(已发送消息 message);// 关闭连接client.Close();Console.WriteLine(客户端已关闭。);}
}运行服务器和客户端程序服务器将监听1234端口等待客户端连接。当客户端连接后服务器将读取客户端发送的数据 并打印出来。客户端将发送一条消息给服务器然后关闭连接。
五、总结
NetworkStream类是C#中进行网络编程的重要工具之一它提供了对网络流进行读写操作的功能。通过使用NetworkStream类可以方便地在两个网络应用程序之间传输数据。在实际应用中根据需要使用不同的方法来读取、写入、定位和刷新网络流以实现网络通信的需求。
需要注意的是在网络编程中异常处理是非常重要的一环。在实际应用中应该充分使用try-catch语句来处理可能发生的异常如网络中断、连接超时等以提高程序的稳定性和可靠性。
此外NetworkStream类是同步的这意味着在同一时刻只有一个线程可以访问网络流。如果需要在多线程环境下使用网络流可以考虑使用异步编程模型或者使用lock语句来确保线程安全。