信息发布→ 登录 注册 退出

C# 如何实现一个简单的 TCP Socket 通信_C# TCP Socket 通信实现教程

发布时间:2025-11-14

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

在 C# 中实现简单的 TCP Socket 通信,主要依赖于 System.Net.Sockets 命名空间中的 TcpClientTcpListener 类。通过这两个类,可以快速搭建一个基于客户端-服务器模型的通信程序。

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.Loopback127.0.0.1 即可。

基本上就这些。C# 的 TCP Socket 编程接口设计清晰,配合 TcpListener 和 TcpClient,能快速实现稳定通信。不复杂但容易忽略异常处理和资源释放。

标签:# 主线程  # 实际应用  # 需要注意  # 本机  # 几点  # 这两个  # 但在  # 都在  # 发送消息  # 连接到  # 客户端  # 异步  # app  # 线程  # 接口  # catch  # try  # 命名空间  # .net  # c#  # stream  # ai  # 端口  # ipad  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!