Baike.dev
All toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
T

TouchSocket

> 开发工具
Open source

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

1.3K stars0 likes0 views
WebsiteGitHub

About

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

En | 中文


Description

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

  • Documentation Home
  • Getting Started
  • API Reference

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 TouchSocket’s 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

TouchSocket’s Plugins system allows extending communication behavior across the entire lifecycle:

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

All via:

csharp
.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:

csharp
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

csharp
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

csharp
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

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

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:

csharp
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

  • CSDN Blog
  • Bilibili Videos
  • Source Repositories
  • QQ Group: 234762506

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

  • Donate
  • Pro Edition

Statement

TouchSocket is a member of the dotNET China organization.

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

C#csharphttphttpsiocp

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category开发工具
PricingOpen source

> Related tools

V
VS Code
流行的开源代码编辑器
G
Git
分布式版本控制系统
V
Vite
下一代前端构建工具