当前位置:首页 > C# > 正文

C#网络编程入门指南(TcpClient与TcpListener实战详解)

在现代软件开发中,C#网络编程 是一项非常重要的技能。无论是开发聊天应用、远程控制工具,还是构建服务器-客户端架构的系统,掌握 TCP 通信都是基础中的基础。本文将围绕 TcpClientTcpListener 这两个 .NET 提供的核心类,手把手教你实现一个简单的 C# TCP 通信程序,即使你是编程小白也能轻松上手!

什么是 TcpClient 和 TcpListener?

TcpClient 是 .NET 中用于发起 TCP 连接并发送/接收数据的客户端类;而 TcpListener 则用于监听指定端口,等待客户端连接,常用于构建服务器端。

C#网络编程入门指南(TcpClient与TcpListener实战详解) C#网络编程 TcpClient教程 TcpListener示例 C# TCP通信 第1张

第一步:创建服务器端(使用 TcpListener)

我们先来写一个简单的服务器,它会监听本地 8888 端口,并接收客户端发来的消息。

using System;using System.Net;using System.Net.Sockets;using System.Text;class TcpServer{    static void Main()    {        // 创建 TcpListener 监听本地 IP 的 8888 端口        TcpListener server = new TcpListener(IPAddress.Any, 8888);        server.Start();        Console.WriteLine("服务器已启动,等待客户端连接...");        while (true)        {            // 接受客户端连接            TcpClient client = server.AcceptTcpClient();            Console.WriteLine("有客户端连接!");            // 获取网络流            NetworkStream stream = client.GetStream();            // 读取客户端发送的数据            byte[] buffer = new byte[1024];            int bytesRead = stream.Read(buffer, 0, buffer.Length);            string message = Encoding.UTF8.GetString(buffer, 0, bytesRead);            Console.WriteLine($"收到消息: {message}");            // 回复客户端            string response = "服务器已收到你的消息!";            byte[] responseBytes = Encoding.UTF8.GetBytes(response);            stream.Write(responseBytes, 0, responseBytes.Length);            // 关闭连接            client.Close();        }    }}

第二步:创建客户端(使用 TcpClient)

接下来我们编写客户端程序,向服务器发送一条消息并接收回复。

using System;using System.Net.Sockets;using System.Text;class TcpClientExample{    static void Main()    {        try        {            // 创建 TcpClient 并连接到本地 8888 端口            TcpClient client = new TcpClient("127.0.0.1", 8888);            Console.WriteLine("已连接到服务器。");            // 获取网络流            NetworkStream stream = client.GetStream();            // 发送消息            string message = "Hello from C# client!";            byte[] data = Encoding.UTF8.GetBytes(message);            stream.Write(data, 0, data.Length);            Console.WriteLine($"已发送: {message}");            // 接收服务器回复            byte[] buffer = new byte[1024];            int bytesRead = stream.Read(buffer, 0, buffer.Length);            string response = Encoding.UTF8.GetString(buffer, 0, bytesRead);            Console.WriteLine($"服务器回复: {response}");            // 关闭连接            client.Close();        }        catch (Exception ex)        {            Console.WriteLine($"连接失败: {ex.Message}");        }        Console.WriteLine("按任意键退出...");        Console.ReadKey();    }}

运行测试

1. 先运行服务器程序(TcpServer),你会看到控制台输出“服务器已启动,等待客户端连接...”。

2. 再运行客户端程序(TcpClientExample),客户端会自动连接服务器、发送消息并显示服务器的回复。

恭喜!你已经成功实现了基于 C# TCP通信 的最简服务器-客户端模型。

常见问题与注意事项

  • 确保防火墙未阻止 8888 端口。
  • 服务器必须先启动,客户端才能成功连接。
  • 实际项目中应使用异步方法(如 AcceptTcpClientAsyncReadAsync)避免阻塞主线程。
  • 记得在使用完后调用 Close()Dispose() 释放资源。

总结

通过本教程,你已经掌握了如何使用 TcpListener示例 构建服务器,以及如何用 TcpClient教程 实现客户端通信。这是 C#网络编程 的基石,后续你可以在此基础上扩展多线程处理、心跳机制、协议封装等功能,打造更强大的网络应用。

希望这篇教程对你有所帮助!动手实践是学习编程的最佳方式,快去试试吧!