在C#网络编程中,NetworkStream 是处理TCP通信数据传输的核心类之一。无论你是开发聊天程序、远程控制软件还是物联网设备通信,掌握 NetworkStream 的读写操作都至关重要。本教程将从零开始,带你深入理解并实践 C# NetworkStream 的使用方法。

NetworkStream 是 .NET 中用于在已建立的网络连接(通常是 TCP 连接)上传输数据的流对象。它封装了底层套接字(Socket)的数据读写操作,使得开发者可以像操作文件流一样操作网络数据。
使用 NetworkStream 的前提是你已经通过 TcpClient 或 Socket 建立了连接。一旦连接成功,就可以通过 TcpClient.GetStream() 方法获取对应的 NetworkStream 实例。
为了演示 C# 网络流读写,我们先构建一个基础的 TCP 通信模型:一个服务器和一个客户端。
using System;using System.IO;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading.Tasks;class TcpServer{ static async Task Main(string[] args) { var listener = new TcpListener(IPAddress.Any, 8888); listener.Start(); Console.WriteLine("服务器已启动,监听端口 8888..."); while (true) { var client = await listener.AcceptTcpClientAsync(); _ = HandleClient(client); // 启动新任务处理客户端 } } static async Task HandleClient(TcpClient client) { using (client) using (NetworkStream stream = client.GetStream()) { byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = await stream.ReadAsync(buffer, 0, buffer.Length)) > 0) { string message = Encoding.UTF8.GetString(buffer, 0, bytesRead); Console.WriteLine($"收到消息: {message}"); // 回复客户端 string response = $"服务器已收到: {message}"; byte[] responseBytes = Encoding.UTF8.GetBytes(response); await stream.WriteAsync(responseBytes, 0, responseBytes.Length); } } }}using System;using System.IO;using System.Net.Sockets;using System.Text;using System.Threading.Tasks;class TcpClientExample{ static async Task Main(string[] args) { using var client = new TcpClient(); await client.ConnectAsync("127.0.0.1", 8888); Console.WriteLine("已连接到服务器。"); using NetworkStream stream = client.GetStream(); // 发送消息 string message = "Hello from C# client!"; byte[] sendBuffer = Encoding.UTF8.GetBytes(message); await stream.WriteAsync(sendBuffer, 0, sendBuffer.Length); Console.WriteLine($"已发送: {message}"); // 接收回复 byte[] receiveBuffer = new byte[1024]; int bytesRead = await stream.ReadAsync(receiveBuffer, 0, receiveBuffer.Length); string response = Encoding.UTF8.GetString(receiveBuffer, 0, bytesRead); Console.WriteLine($"服务器回复: {response}"); }}ReadAsync 和 WriteAsync 方法,避免阻塞主线程,提升程序响应性。using 语句确保 NetworkStream 和 TcpClient 被正确释放。在实际开发中,你可能会遇到以下问题:
Read 可能只读到部分数据。建议使用固定长度头或分隔符来界定消息边界。TcpClient.NoDelay = true 或定期发送心跳包检测连接状态。try-catch 捕获 IOException、ObjectDisposedException 等异常。掌握这些技巧后,你就能更稳健地实现 C# TCP通信 功能。
NetworkStream 是 C# 网络编程中不可或缺的组件。通过本教程,你学会了如何使用它进行基本的读写操作,并了解了在真实项目中需要注意的关键点。无论是构建高性能服务器还是轻量级客户端,C# 网络流读写 都是你必须掌握的核心技能。
现在,动手试试吧!修改上面的代码,添加多客户端支持、消息队列或自定义协议,进一步提升你的 C# 网络编程 能力。
本文由主机测评网于2025-12-04发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025122744.html