基于WPF + DotNetty的TCP长连接小示例

使用示例

DotNetty是微软团队参考Java上的Netty开发的网络通信框架,并且保留了Netty原来绝大部分的编程接口。但目前最大的问题是没有官方说明文档,官方示例也仅仅是控制台应用程序,参考价值较低。本项目展示了在WPF中DotNetty的基本使用方法。

DotNetty的GitHub地址:https://github.com/azure/dotnetty

实现功能:

  • 心跳检测
  • 断线重连

引用类库:

  • DotNetty.Buffers:对内存缓冲区管理的封装
  • DotNetty.Codecs:对编解码的封装,包括一些基础基类的实现
  • DotNetty.Common:公共的类库项目,包装线程池,并行任务和常用帮助类的封装
  • DotNetty.Handlers:封装了常用的管道处理器,比如tls编解码,超时机制,心跳检查,日志等
  • DotNetty.Transport:DotNetty核心的实现
  • protobuf-net:Protocol Buffers .Net操作类库

粘包/拆包

一般所谓的TCP粘包是在一次接收数据不能完全地体现一个完整的消息数据。TCP通讯存在粘包的主要原因是TCP是以流的方式来处理数据,所以就会引发一次接收的数据无法满足消息的需要,导致粘包的存在。处理粘包的唯一方法就是制定应用层的数据通讯协议,通过协议来规范现有接收的数据是否满足消息数据的需要。

解决办法:

      1. 消息定长:报文大小固定长度,不够空格补全,发送和接收方遵循相同的约定,这样即使粘包了通过接收方编程实现获取定长报文也能区分。
      2. 包尾添加特殊分隔符:例如每条报文结束都添加回车换行符(例如FTP协议)或者指定特殊字符作为报文分隔符,接收方通过特殊分隔符切分报文区分。
      3. 将消息分为消息头和消息体:消息头中包含表示信息的总长度(或者消息体长度)的字段
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
打造最漂亮的串口调试助手需要运用WPF技术和.NET C#语言来实现。首先,要先了解串口调试的基本原理和功能需求,然后才能设计出漂亮、易用和实用的调试助手。 首先,对于界面设计,我们可以运用WPF的强大布局和可视化能力来创建一个美观的界面。可以使用XAML语言设置界面的布局、样式和颜色等。通过合理的布局设计和简洁明快的视觉效果,可以提升用户的使用体验。 其次,为了实现串口调试的功能需求,我们需要在界面上添加串口设置、数据发送和接收等相关控件。串口设置方面,可以提供一个下拉框来列出所有可用的串口名称和设置波特率、数据位、停止位、校验位等参数的选项。数据发送方面,可以提供一个文本框来输入要发送的数据,并提供发送按钮以方便用户发送数据。数据接收方面,可以创建一个文本框或者列表框来显示接收到的数据,并提供清空按钮以方便用户清空接收数据的窗口。 此外,为了增加功能的灵活性和可扩展性,可以在界面上添加一些附加的功能按钮,比如保存接收数据、打开文件、数据自动发送、数据统计等等。 最后,为了提供更好的用户体验,可以在设计中考虑增加一些人性化的细节,比如添加状态栏来显示当前串口连接状态、显示发送和接收数据的字节数、提供快捷键等等。 综上所述,通过运用WPF技术和.NET C#语言,我们可以打造出一个功能强大、界面漂亮的串口调试助手,提供完善的串口设置、数据发送和接收功能,同时考虑用户体验和功能扩展的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值