用于C的有限状态机编译器来模拟网络协议

Shr*_*n B 2 c network-protocols fsm ragel scxml

我正在寻找一个好的状态机编译器,以便测试一些自定义网络协议.我查看了一些工具,如Yakindu,Ragel(编译器),SCXML(语言),但我不确定是否有任何工具可用于网络协议.

SCXML(语言)看起来不错,但我找不到任何专门用于C的编译器(scxmlcc用于C++).有没有人知道基于SCXML的C编译器?Yakindu工具看起来很有前景,但我不确定是否可以测试像BGP/OSPF这样的网络协议.任何人都可以对此提出任何指示吗?Ragel看起来也不错,但我不确定是否可以使用此编译器生成复杂的网络协议客户端.

我特别提到网络协议的原因是我还希望能够在"事件"发生后执行自定义例程,例如packet_create/packet_send(具有自定义数据包大小)等,作为"操作"的一部分.

我是否需要始终从状态图生成代码,或者有没有办法直接与状态交互?我是FSM的新手,任何帮助/建议/建议/链接将不胜感激.

小智 5

默认的Yakindu SCT C代码生成器生成与具体执行环境无关的纯C代码.这意味着您可以获得一块标准C代码,您可以手动将其集成到您自己的应用程序中.此手动集成意味着在应用程序和状态机之间映射事件,操作和变量.此外,您必须正确触发状态机执行.

您可以在用户指南中找到有关该信息的一些信息.您还可以自定义代码生成器以满足您的需求,但只有在与应用程序的集成始终相同并且您希望集成多个或两个状态机时,这才有意义.

因此,如果您提供有关应用程序端API的更多信息,我可以提供一些提示如何与状态机集成.