本节的示例略比前一个示例复杂,说明了如何使用uip_conn 结构中的应用程序状态字段。该应用程序类似于前节中的应用程序,它同样侦听输入连接的端口,并使用单个“ok”响应发送给它的数据,差别是当连接建立时该应用程序打印输出“Welcome!”消息。这种看似微小的操作变化对应用程序的实现方式产生了很大的影响,复杂性增加的原因是如果数据在网络中丢失,则应用程序必须知道要重传的数据。如果“Welcome!”消息丢失,应用程序必须重新发送该消息。如果“ok”消息丢失,应用程序必须发送新的“ok”。应用程序知道只要“Welcome!”消息尚未被远程主机确认,在网络中该消息可能被丢弃。但是,一旦远程主机发送了确认消息,应用程序就可以确定已收到“Welcome!”,并且知道任何丢失的数据肯定是“ok”消息。因此,应用程序可能处于两种状态之一:WELCOME-SENT 状态或WELCOME-ACKED 状态。WELCOME-SENT 状态表示已发送“Welcome!”但未被确认的状态,WELCOME-ACKED 状态表示“Welcome!”已被确认的状态。
当远程主机连接到应用程序时,应用程序发送“Welcome!”消息并将其状态设置为WELCOME-SENT。收到“Welcome”消息的确认消息后,应用程序将进入WELCOME-ACKED 状态。如果应用程序从远程主机接收到任何新数据,它将通过发送“ok”来响应。如果请求应用程序重新传输上一条消息,它将查看应用程序处于哪种状态。如果应用程序处于WELCOME-SENT 状态,则会发送“Welceome!”消息,因为它知道之前的“Welcome”消息尚未被确认。如果应用程序处于WELCOME-ACKED 状态,它知道最后一条消息是“ok”消息并发送该消息。
该应用程序的实现如下所示,应用程序的实现后面是配置设置。(www.xing528.com)
应用程序配置:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。