若汝棋茗 a144a8dbfe 文档(README): 优化文档结构与内容提升可读性
重写 README.md 和 README.zh.md 文件:
- 更新语言切换链接和徽章,新增 GitHub Star 徽章
- 优化描述部分,突出框架高性能与多协议支持
- 重构文档导航,合并支持环境与框架部分
- 增加性能对比表格,更新 IOCP 优化与数据适配器内容
- 提供现代化代码示例,使用 Memory.Span 替代 ByteBlock.Span
- 移除冗余内容,新增 TouchSocket 加入 dotNET China 声明
- 提供更清晰的联系与支持方式
2025-11-26 20:06:35 +08:00
2024-11-17 20:53:15 +08:00
2025-11-23 12:16:30 +08:00
2025-11-23 12:16:30 +08:00
2024-11-17 20:53:15 +08:00
2024-11-17 20:53:15 +08:00
2025-11-26 19:40:10 +08:00
2025-03-30 11:30:52 +08:00
2024-11-17 20:53:15 +08:00
2025-11-23 12:16:30 +08:00
2025-04-02 17:39:01 +08:00
2024-11-17 20:53:15 +08:00
2024-11-17 20:53:15 +08:00
2025-11-23 12:38:05 +08:00

En | 中文

纸上得来终觉浅,绝知此事要躬行。


🎀 Description

Alt

TouchSocket is a simple, modern, and high-performance .NET networking framework, supporting C#, VB.NET, F#, and more. It helps you build powerful communication applications such as TCP / UDP / MQTT / WebSocket / SSL / HTTP / Modbus / RPC with ease.

The framework features a highly optimized IOCP/Socket implementation, robust memory pooling, a flexible data-adapter pipeline, and a rich plugin ecosystem including heartbeat, reconnection, SSL, RPC, and more.


🌟 Documentation


🖥 Supported Platforms

  • .NET Framework ≥ 4.6.2
  • .NET Standard ≥ 2.0
  • .NET ≥ 6.0

🥪 Supported Application Types

Console / WinForm / WPF / MAUI / Avalonia / Blazor / Xamarin / Unity (non-WebGL) / Mono / All C#-based platforms


🌴 TouchSocket at a Glance (Updated & Revised)

🚀 1. A Truly High-Performance IOCP Implementation

TouchSocket provides a deeply optimized IOCP design.

Implementation Memory Handling Performance Impact
Traditional IOCP (Microsoft sample) Uses a fixed shared buffer; received data must be copied to another buffer Extra copy → High overhead under load
TouchSocket IOCP Allocates a fresh memory block from the memory pool for each receive Zero extra copy → Significant performance gain

In stress tests (100k messages × 64KB), TouchSocket achieved up to 10× faster throughput compared to the traditional model.


🔧 2. Data Adapter System — The Heart of the Framework

The data-adapter pipeline is one of TouchSockets core strengths:

  • Parses headers and payloads
  • Handles sticky packets & fragmentation
  • Converts directly to data objects
  • Hot-swappable adapters
  • Built-in templates: fixed header, fixed length, terminator, HTTP, WebSocket, etc.

Adapters make protocol development clean, modular, and highly reusable.


🧩 3. Pluggable Extension System

TouchSockets Plugins system allows extending communication behavior across the entire lifecycle:

  • Auto reconnection
  • Heartbeat detection
  • SSL validation
  • Logging
  • Authentication
  • Custom data pipelines

All via:

.ConfigurePlugins(a => { ... });

🛠 4. Robust TCP/UDP Abstraction

TouchSocket maintains full compatibility with native Socket semantics while improving:

  • Stability
  • Concurrency and throughput
  • Connection lifecycle management
  • Exception handling
  • Unified event model (Connected / Received / Closed)

You can migrate existing Socket code with minimal changes.


📦 5. Unified Client/Server API

Across TCP, UDP, WebSocket, and others, TouchSocket exposes a consistent set of APIs:

client.ConnectAsync(...)
client.SendAsync(...)
client.Received += ...

This ensures a low learning curve and fast development.


🧠 6. High-Efficiency Memory Pool & Span-Based Processing

The framework is optimized with:

  • ByteBlock reusable high-performance buffers
  • MemoryPool
  • Span / Memory

Ensuring minimal allocations and low GC pressure during heavy workloads.


Basic Examples

The following examples show only the simplest usage. Refer to the documentation for more advanced scenarios.

TcpService

TcpService service = new TcpService();

service.Connected = (client, e) => EasyTask.CompletedTask;
service.Closed = (client, e) => EasyTask.CompletedTask;

service.Received = (client, e) =>
{
    string str = e.Memory.Span.ToString(Encoding.UTF8);
    Console.WriteLine($"Received: {str}");
    return EasyTask.CompletedTask;
};

await service.StartAsync(7789);

TcpClient

TcpClient client = new TcpClient();

client.Connected = (c, e) => EasyTask.CompletedTask;
client.Closed = (c, e) => EasyTask.CompletedTask;

client.Received = (c, e) =>
{
    Console.WriteLine(e.Memory.Span.ToString());
    return EasyTask.CompletedTask;
};

await client.ConnectAsync("127.0.0.1:7789");
await client.SendAsync("Hello");

TcpClient Auto-Reconnection

.ConfigurePlugins(a =>
{
    a.UseReconnection<TcpClient>();
});

🧩 Fixed-Header Package Mode

Solves packet fragmentation & merging issues.

Supports:

  • Byte = 1 + n (≤255B)
  • Ushort = 2 + n (≤65535B)
  • Int = 4 + n (≤2GB)

Endianness is configurable:

TouchSocketBitConverter.DefaultEndianType = EndianType.Little;

🧱 Custom Adapters

CustomFixedHeaderDataHandlingAdapter

For fixed-header formats such as:

| 1 | 1 | 1 | ********** |

CustomUnfixedHeaderDataHandlingAdapter

For variable-header protocols such as HTTP:

  • Header ends with \r\n\r\n
  • Body length from Content-Length

A small amount of code can build a complete parser.


👑 Feature Overview Diagram


🔗 Contact


🙏 Acknowledgements

Thank you all for supporting TouchSocket. If you have questions, feel free to submit an issue or join the QQ group.

Special thanks to:

  • Visual Studio
  • JetBrains
  • Visual Studio Code

❤️ Support the Author


📢 Statement

TouchSocket is a member of the dotNET China organization.

Description
TouchSocket is an integrated .NET networking framework that includes modules for socket, TCP, UDP, SSL, named pipes, HTTP, WebSocket, RPC, and more. It offers a one-stop solution for TCP packet issues and enables quick implementation of custom data message parsing using protocol templates.
Readme Apache-2.0 453 MiB
Languages
csharp 46.7%
C# 27.1%
MDX 25.9%
TypeScript 0.3%