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

ChatX翻译
ChatX翻译

最实用、可靠的社交类实时翻译工具。 支持全球主流的20+款社交软件的聊天应用,全球200+语言随意切换。 让您彻底告别复制粘贴的翻译模式,与世界各地高效连接!

下载
  • 指定服务器 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接口等等。

989

2023.10.19

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

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

50

2025.10.17

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

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

211

2025.12.29

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

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

471

2023.08.10

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

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

471

2023.08.10

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

4

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

7

2025.12.31

热门下载

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

精品课程

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

共578课时 | 40.1万人学习

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

共12课时 | 0.9万人学习

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

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