0

0

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

煙雲

煙雲

发布时间:2025-11-14 08:14:03

|

225人浏览过

|

来源于php中文网

原创

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

c# 如何实现一个简单的 tcp socket 通信_c# tcp socket 通信实现教程

在 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 连接到服务器:

OneAI
OneAI

将生成式AI技术打包为API,整合到企业产品和服务中

下载
  • 指定服务器 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,能快速实现稳定通信。不复杂但容易忽略异常处理和资源释放。

相关专题

更多
硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1023

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

66

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

439

2025.12.29

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

481

2023.08.10

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

481

2023.08.10

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

68

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

127

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

54

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

39

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Java 教程
Java 教程

共578课时 | 47.6万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.0万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号