- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
会计学1通信软件设计方法状态机程序设计与无状态协议程序设计
2讲授内容1)LINUX概况2)LINUX下C语言程序编译和调试2.1)LINUX开发环境学习(实验)3)通信系统和通信软件4)基于TCP-IP的主机到主机通信软件示例4.1)SOCKET程序设计(实验)5)有状态与无状态通信协议程序设计6)LINUX内核程序设计7)低层232接口通信程序设计8)设计一个简单链路层以及程序8.1)IP软件和链路层软件设计(实验)第1页/共62页
3本讲重点问题如何编写状态机程序第2页/共62页
4第五讲 有状态与无状态通信协议程序设计协议与状态机状态机程序设计IP转发程序设计第3页/共62页
5协议与状态机什么是协议?第4页/共62页
6协议与状态机标准规范协议私有的协议协议就是通信规程,通信双方或多方的信息传输约定信息传输: 1、控制信息(数据);2、运载信息(数据)通信系统的核心就是协议第5页/共62页
7协议与状态机协议分为无状态协议与有状态协议无状态协议:信息处理和历史记录无关 例如 IP有状态协议:信息处理和历史记录有关 例如 TCP 有状态协议用状态机来表示 或者状态图来表示第6页/共62页
8协议与状态机有限状态机的元素 状态协议的一个逻辑概念,规定特定状态下可以接受特定事件和执行相应动作 事件PDU、时钟计数溢出、系统管理指令 动作功能程序第7页/共62页
9协议与状态机状态机简单例子2个状态4个事件若干动作状态S1Disconnected断开状态S2Connected连接事件E4 – 关闭(Shutdown)--------------------------------送关闭信息PDU给对方关闭时钟事件E1 – 本地初始化(Initialization)------------------------------送启动信息PDU给对方开启时钟事件E2 – 收到对方来的数据PDU(Protocol Message)------------------------------处理接收的PDU事件E3 – 时钟到(Timer Expiry)------------------------------定时处理第8页/共62页
10协议与状态机如何编写这个状态机程序?第9页/共62页
11状态机程序设计 – 示例6Switch-case结构方法switch (event) { case E1: /* Initialize */ If (current_state == DISCONNECTED) { InitializeProtocol (); current_state = CONNECTED; } break; case E2: /* Protocol Messages */ If (current_state == CONNECTED) ProcessMessages (); break; case E3: /* Timer Event(s) */ If (current_state == CONNECTED) ProcessTimers (); break; case E4: /* Disconnect Event */ If (current_state == CONNECTED) { ShutdownProtocol (); current_state = DISCONNECTED; } break; default: logError (Invalid Event, current_state, event); break;}int event;int current_stat;Event变量的数值从哪里获得?增加case语句再用switch-case结构程序变得很复杂,可读差,修改困难状态数量很多怎么吧?事件数量很多怎么吧?这些函数是那里来的?第10页/共62页
12状态机程序设计switch-case结构 + 主循环……………while (1) { get_event(event); switch (event) { case E1: /* Initialize */ …… break; case E2: /* Protocol Messages */ ……… break; case E3: /* Timer Event(s) */ ………… break; case E4: /* Disconnect Event */ … break; default: …… break; }}………………获得事件判断事件根
您可能关注的文档
最近下载
- 侠客风云传养成模式触发剧情一览.pdf VIP
- YST 582-2013 电池级碳酸锂.pdf
- 淘股吧高手语录.docx VIP
- 2024~2025学年上学期七年级第一次月考数学试题(含答案).pdf VIP
- GB-T6284-1986化工产品中水分含量测定的通用方法重量法.pdf
- MSC:人工智能赋能可持续发展和投资白皮书.pdf VIP
- 24J306 窗井、设备吊装口、排水沟、集水坑图集.docx VIP
- 2014年深圳市坪山新区主要病媒生物监测及白纹伊蚊抗药性研究.pdf VIP
- T∕CBDA 69-2023 建筑装饰装修碳排放计算标准.pdf
- 国际私法(暨南大学)中国大学MOOC 慕课 章节测验 期末考试答案.docx VIP
文档评论(0)