TouchSocket:一个功能强大且易于使用的 .NET 网络通信框架
TouchSocket是一个功能强大且易于使用的.NET 网络通信框架,适用于C#、VB.Net 和 F#等语言。它提供了多种通信模块,包括TCP、UDP、SSL、WebSocket、Modbus等。支持解决TCP黏包分包问题和UDP大数据包分片组合问题。框架支持多种协议模板,快速实现固定包头、固定长度和区间字符等数据报文解析。
TouchSocket能够满足多种网络通信需求,并提供了丰富的使用文档,是.NET开发者进行网络通信开发的优秀选择。
主要特性
一键式解决TCP黏分包问题:通过协议模板,快速实现固定包头、固定长度、区间字符等数据报文解析。 高性能IOCP模式:与传统IOCP模式不同,TouchSocket避免了数据复制操作,显著提升了数据传输性能。 数据处理适配器:支持提前解析数据包和数据对象,可以随时替换并立即生效,灵活且易用。
TouchSocket提供多种框架模型,能够完全兼容基于TCP、UDP协议的所有协议。例如:TcpService与TcpClient,其基础功能和Socket一模一样,只是增强了框架的坚固性和并发性,将连接和接收数据通过事件的形式抛出,让使用者能够更加友好的使用。
支持环境
.NET Framework4.5及以上。 .NET 6.0及以上。 .NET Standard2.0及以上。
支持框架
Console、WPF、Winform、Blazor、Xamarin、MAUI、Avalonia、Mono、Unity 3D(除WebGL)、其他(即所有C#系)。
功能导图
简单示例
TcpService
TcpService service = new TcpService(); service.Connecting = (client, e) => {return EasyTask.CompletedTask; };//有客户端正在连接 service.Connected = (client, e) => {return EasyTask.CompletedTask; };//有客户端连接 service.Disconnected = (client, e) => {return EasyTask.CompletedTask; };//有客户端断开连接 service.Received = (client, e) => { //从客户端收到信息 string mes = e.ByteBlock.Span.ToString(Encoding.UTF8); Console.WriteLine($"已从{client.Id}接收到信息:{mes}"); return EasyTask.CompletedTask; }; await service.StartAsync(7789);//启动
TcpClient
TcpClient tcpClient = new TcpClient(); tcpClient.Connected = (client, e) => {return EasyTask.CompletedTask; };//成功连接到服务器 tcpClient.Disconnected = (client, e) => {return EasyTask.CompletedTask; };//从服务器断开连接,当连接不成功时不会触发。 tcpClient.Received = (client, e) => { //从服务器收到信息 string mes = e.ByteBlock.Span.ToString(Encoding.UTF8); Console.WriteLine($"接收到信息:{mes}"); return EasyTask.CompletedTask; }; await tcpClient.ConnectAsync("127.0.0.1:7789"); await tcpClient.SendAsync("Hello");
创建组播服务器
//创建udpService UdpSession udpService = new UdpSession(); udpService.Received = (remote, e) => { Console.WriteLine(e.ByteBlock.ToString()); return EasyTask.CompletedTask; }; udpService.Setup(new TouchSocketConfig() .SetBindIPHost(new IPHost(7789)) .UseBroadcast() .SetUdpDataHandlingAdapter(() => new NormalUdpDataHandlingAdapter())); udpService.Start(); //加入组播组 udpService.JoinMulticastGroup(IPAddress.Parse("224.5.6.7"));
发送组播数据
UdpSession udpClient = new UdpSession(); udpClient.Setup(new TouchSocketConfig() .SetBindIPHost(new IPHost(7788)) .SetUdpDataHandlingAdapter(() => new NormalUdpDataHandlingAdapter())); udpClient.Start(); udpClient.SendAsync(new IPEndPoint(IPAddress.Parse("224.5.6.7"), 7789), Encoding.UTF8.GetBytes("我是组播"));
开源地址
https://gitee.com/rrqm_home/touchsocket
关注公众号:拾黑(shiheibook)了解更多
赞助链接:
关注数据与安全,洞悉企业级服务市场:https://www.ijiandao.com/
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

随时掌握互联网精彩
- MediaGo无需抓包,即可轻松嗅探视频资源
- 中国联通和中国电信深耕共建共享:为全球运营商分享中国方案
- 5G商用三周年:理想有没有照进现实?
- 我,手机店老板,准备关店了
- 西电、成电的风雨往事
- 人工智能“颠覆”汽车 ,可持续发展还看芯片
- “由土变洋”的李宁,下一个三年竟要走高价轻奢路线?
- 微信8.0版本上线 ;苹果计划推出VR头盔;网易正式进军视频领域 |Do早报
- 在群晖 DSM 中使用「网云穿」实现免费内网穿透并开机自启[无需公网IP教程]
- 在办公室也能茁壮成长的奥秘,确定不 Get 下?
- 华为:Mate 40每个生产线只需要14个人;阿里、腾讯、中国移动等133家企业签署网络数据安全自律公约【Do说】
- 洛雪音乐助手下载 UOS统一操作系统音乐下载软件