2014-09-27 75 views
-1

我有两台计算机通过串行调制解调器进行通信。 我想在该生产线上有一个可靠性协议。通过串行连接的可靠性

我一直在研究PPP,SLIP和RATP。并不是所有的都是最合适的,我不想编写所有的代码,特别是如果在线代码基础良好的话。

C#中是否有可用于此目的的库或代码项目? 如果您不推荐使用什么协议来实现?

连接速度为9600,但发送的数据量不是很大,速度也不是很大的问题。简单和易于开发!

+0

正常方式做到这一点在一个串行协议是计算该消息的CRC和附加,在该消息的末尾。接收器可以检查CRC并在不匹配时发送NAK。发件人应通过重新发送消息来响应NAK。当它被正确接收时,它应该发送一个ACK来确认消息已经正确到达。 Google有很多关于如何在C#中实现CRC的示例。但最简单的方法是将切换到以太网并使用TCP/IP,你会得到错误处理的自由... – AVee 2014-09-27 19:42:40

+0

您需要定义你的*“reliabilty”的意思*。首先是信息完整性问题:收到的信息与发送时相同吗?那么是否收到所有发送的消息?消息是否按正确的顺序接收?是否需要身份验证(例如,您是否在考虑中间人攻击)?这些问题并不是每个“可靠”协议都能解决的。 – sawdust 2014-09-27 19:44:49

回答

-1

我总是只给每条消息添加一个CRC,但是由于未经请求的状态报告,我的高级协议是自同步和丢失容忍的 - 如果命令丢失并且状态没有改变,在下一个州报告。根据您的要求是检测还是更正错误,以及是否可以容忍重传的额外延迟,您可能需要查看前向纠错码。

感兴趣概念包括消息序列号,确认,去退N VS选择性重发,和代码之间的最小距离(汉明距离)。

我绝对建议你看一下TCP的设计。基本要求非常小,可以保证按订单交付。

+0

@sawdust:啊,对不起。在您评论之前,我认为编辑已经在系统中一段时间​​了。无论如何,我同意一些额外的解释是可取的。不过我肯定行“根据您的要求是否是检测或纠正错误,以及是否可以容忍的重传延迟外,你可能需要寻找到一个前向纠错码。”在第一个版本。 – 2014-09-27 19:53:33