无论是什么协议都可以分为两个部分来看.
一.静态的方面,parser和to string.
协议字段本身的解析(parser):就是根据一个字符串转化为协议的结构体.
和组包(to string):转化为字符串后才能发送.
这两个是基本的.都要实现.
二.动态的方面,Transaction layer
事务层的管理.也就是说包与包之间的关系.比如你发了一个Invite的时候,可能收到对方
Decline或者Accept消息.收到其他的消息都要不予理会(或者是与此项事务无关)如果超时了,还要
取消此项事务.也许可能有人会说如果我发invite的时候收到message消息传输文本怎么办?我要丢
弃吗?实际上你可以理解为这是两个并行的事务(message和invite).一般来说好的协议的包中都会
有call-id之类的属性行.用来标识属于一个事务.
事务的管理确切的说反映在编译原理上就是自动状态机的实现.
要根据收到的包判断状态可能的下一步走向.直至走到终结点.一个事务才算结束.
一.静态的方面,parser和to string.
协议字段本身的解析(parser):就是根据一个字符串转化为协议的结构体.
和组包(to string):转化为字符串后才能发送.
这两个是基本的.都要实现.
二.动态的方面,Transaction layer
事务层的管理.也就是说包与包之间的关系.比如你发了一个Invite的时候,可能收到对方
Decline或者Accept消息.收到其他的消息都要不予理会(或者是与此项事务无关)如果超时了,还要
取消此项事务.也许可能有人会说如果我发invite的时候收到message消息传输文本怎么办?我要丢
弃吗?实际上你可以理解为这是两个并行的事务(message和invite).一般来说好的协议的包中都会
有call-id之类的属性行.用来标识属于一个事务.
事务的管理确切的说反映在编译原理上就是自动状态机的实现.
要根据收到的包判断状态可能的下一步走向.直至走到终结点.一个事务才算结束.