首先实现TCP服务器监听客户端连接并收发数据,再创建客户端连接服务器发送消息并接收响应,最后通过异步处理、异常捕获和资源释放优化程序稳定性。

在 C# 中实现简单的 TCP Socket 通信,主要依赖于 System.Net.Sockets 命名空间中的 TcpClient 和 TcpListener 类。通过这两个类,可以快速搭建一个基于客户端-服务器模型的通信程序。
1. 创建 TCP 服务器端
服务器负责监听指定端口,等待客户端连接,并接收和发送数据。
使用 TcpListener 监听客户端请求:
- 指定 IP 地址和端口号启动监听
- 调用 AcceptTcpClient() 等待客户端接入
- 通过 NetworkStream 读取或写入数据
示例代码:
using System; using System.IO; using System.Net; using System.Net.Sockets;class TcpServer { static void Main() { TcpListener listener = new TcpListener(IPAddress.Any, 8080); listener.Start(); Console.WriteLine("服务器已启动,等待客户端连接...");
using (TcpClient client = listener.AcceptTcpClient()) { Console.WriteLine("客户端已连接。"); using (NetworkStream stream = client.GetStream()) { byte[] buffer = new byte[1024]; int bytesRead = stream.Read(buffer, 0, buffer.Length); string message = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead); Console.WriteLine("收到消息:" + message); // 回复客户端 string response = "服务器已收到你的消息:" + message; byte[] responseBytes = System.Text.Encoding.UTF8.GetBytes(response); stream.Write(responseBytes, 0, responseBytes.Length); } } listener.Stop(); Console.WriteLine("服务器已关闭。"); }}
2. 创建 TCP 客户端
客户端用于连接服务器,发送数据并接收响应。
使用 TcpClient 连接到服务器:
- 指定服务器 IP 和端口进行连接
- 通过 NetworkStream 发送和接收数据
示例代码:
using System; using System.IO; using System.Net.Sockets; using System.Text;class TcpClientApp { static void Main() { using (TcpClient client = new TcpClient()) { client.Connect(IPAddress.Loopback, 8080); // 连接本地 8080 端口 Console.WriteLine("已连接到服务器。");
using (NetworkStream stream = client.GetStream()) { // 发送消息 string message = "Hello, Server!"; byte[] data = Encoding.UTF8.GetBytes(message); stream.Write(data, 0, data.Length); Console.WriteLine("消息已发送。"); // 接收回复 byte[] buffer = new byte[1024]; int bytesRead = stream.Read(buffer, 0, buffer.Length); string response = Encoding.UTF8.GetString(buffer, 0, bytesRead); Console.WriteLine("收到回复:" + response); } } Console.WriteLine("连接已关闭。"); }}
3. 注意事项与优化建议
虽然上述例子实现了基本通信,但在实际应用中需要注意以下几点:
- 使用异步方法(如 BeginConnect / BeginRead)避免阻塞主线程
- 添加异常处理(try-catch)应对网络中断或连接失败
- 定义通信协议,比如消息长度前缀,防止粘包问题
- 及时释放资源,确保 TcpClient 和 TcpListener 被正确关闭
4. 测试运行步骤
要测试这个简单通信程序:
- 先运行服务器端程序
- 再运行客户端程序
- 观察控制台输出是否正常收发消息
如果都在本机测试,使用 IPAddress.Loopback 或 127.0.0.1 即可。
基本上就这些。C# 的 TCP Socket 编程接口设计清晰,配合 TcpListener 和 TcpClient,能快速实现稳定通信。不复杂但容易忽略异常处理和资源释放。









