当前位置: 首页 > news >正文

网站制作和网页制作区别网站项目意义

网站制作和网页制作区别,网站项目意义,网站建设包含seo吗,龙岩市城乡规划建设局网站写在前面 在进一步了解Socket粘包分包的过程中,了解到了.NET 中的 System.IO.Pipelines,可以更优雅高效的解决这个问题;先跟随官方的示例做个初步的认识。 System.IO.Pipelines 是一个库,旨在使在 .NET 中执行高性能 I/O 更加容…

写在前面

在进一步了解Socket粘包分包的过程中,了解到了.NET 中的 System.IO.Pipelines,可以更优雅高效的解决这个问题;先跟随官方的示例做个初步的认识。

System.IO.Pipelines 是一个库,旨在使在 .NET 中执行高性能 I/O 更加容易。 该库的目标为适用于所有 .NET 实现的 .NET Standard。
System.IO.Pipelines 具有高性能的流数据分析功能,可以减少代码复杂性。

老规矩通过NuGet安装该类库

代码实现

using System.Buffers;
using System.IO.Pipelines;
using System.Text;class Program
{static async Task Main(){using var stream = File.OpenRead("lorem-ipsum.txt");var reader = PipeReader.Create(stream);var writer = PipeWriter.Create(Console.OpenStandardOutput(),new StreamPipeWriterOptions(leaveOpen: true));WriteUserCancellationPrompt();var processMessagesTask = ProcessMessagesAsync(reader, writer);var userCanceled = false;var cancelProcessingTask = Task.Run(() =>{while (char.ToUpperInvariant(Console.ReadKey().KeyChar) != 'C'){WriteUserCancellationPrompt();}userCanceled = true;// No exceptions thrownreader.CancelPendingRead();writer.CancelPendingFlush();});await Task.WhenAny(cancelProcessingTask, processMessagesTask);Console.WriteLine($"\n\nProcessing {(userCanceled ? "cancelled" : "completed")}.\n");}static void WriteUserCancellationPrompt() =>Console.WriteLine("Press 'C' to cancel processing...\n");static async Task ProcessMessagesAsync(PipeReader reader,PipeWriter writer){try{while (true){ReadResult readResult = await reader.ReadAsync();ReadOnlySequence<byte> buffer = readResult.Buffer;try{if (readResult.IsCanceled){break;}if (TryParseLines(ref buffer, out string message)){FlushResult flushResult =await WriteMessagesAsync(writer, message);if (flushResult.IsCanceled || flushResult.IsCompleted){break;}}if (readResult.IsCompleted){if (!buffer.IsEmpty){throw new InvalidDataException("Incomplete message.");}break;}}finally{reader.AdvanceTo(buffer.Start, buffer.End);}}}catch (Exception ex){Console.Error.WriteLine(ex);}finally{await reader.CompleteAsync();await writer.CompleteAsync();}}static bool TryParseLines(ref ReadOnlySequence<byte> buffer,out string message){SequencePosition? position;StringBuilder outputMessage = new();while (true){position = buffer.PositionOf((byte)'\n');if (!position.HasValue)break;outputMessage.Append(Encoding.ASCII.GetString(buffer.Slice(buffer.Start, position.Value))).AppendLine();buffer = buffer.Slice(buffer.GetPosition(1, position.Value));};message = outputMessage.ToString();return message.Length != 0;}static ValueTask<FlushResult> WriteMessagesAsync(PipeWriter writer,string message) =>writer.WriteAsync(Encoding.ASCII.GetBytes(message));
}

调用示例

总结

例子中用到的文本文件是一个以\n 换行符作为结尾的多行文本,微软官方示例没有提供,这个是自己建的测试文件,如果没有检测到\n会抛出异常。

 从运行的结果可以看到,从传入的流中识别以\n结尾,作为数据块的区分,利用这个特性定义数据报文的尾部,实现分包。

http://www.sczhlp.com/news/87662/

相关文章:

  • wap网站搜索wordpress需注册访问
  • 哪些网站专做自媒体的个人网站设计毕业设计论文
  • 大连公司做网站深圳企业宣传片
  • 网站建设与管理赚钱吗苏州网站建设制作工作室
  • app网站开发的特点江岸区建设局网站
  • mysql导入数据库,从基础命令到高效技巧
  • 基于“北斗+卫星互联网”的低空飞行服务保障基础设施
  • 网站qq临时会话怎么弄设计公司入川备案
  • wordpress做的视听网站照明灯具类企业网站
  • 毕业设计做网站好做吗天猫网站做链接怎么做
  • 个人网站命名的要求西安关键词排名推广
  • 鲜花网站建设规划常州教育建设装备中心网站
  • 网站后台修改不了站酷网站
  • 三原网站建设做网站的外部链接关系分析的工具
  • 网站怎样防止攻击音乐网站开发模板
  • 怎么自己建立网站及建立网站方法免费推广平台有哪些软件
  • 自建微网站服务器网站备案注销申请书
  • 大理建设工程信息网站wordpress文章更多
  • 做网站建设销售途径提供视频下载的网站
  • 自助建站网站模板栾川网站开发
  • 稷山做网站成都市金牛区建设和交通局网站
  • 网站优化图片市场营销案例100例
  • CVE-2025-30208 Vite开发服务器任意文件读取漏洞
  • 一个微信可以做两个网站支付宝设计工作室与网站建设工作室
  • Claude Code 从入门到精通:最全配置指南和工具推荐
  • 网站网站开发设计wordpress页码数量
  • 常州网站备案成都优化网站分析
  • 广州做网站找哪个公司好wordpress最好的免费主题2018
  • 设计风格网站欣赏网站负责人信息
  • 新手必学!exchg扩展库:充电管理傻瓜化,续航焦虑不再有