1. 关于Notification
1.1. 首先开启server端里面全部的notification
evnts.sctp_data_io_event = 1;
evnts.sctp_association_event = 1;
#ifdef ENABLE_ALL_NOTIFICATION
evnts.sctp_address_event = 1;
evnts.sctp_send_failure_event = 1;
evnts.sctp_peer_error_event = 1;
evnts.sctp_shutdown_event = 1;
evnts.sctp_partial_delivery_event = 1;
evnts.sctp_adaptation_layer_event = 1;
evnts.sctp_sender_dry_event = 1;
#endif
1.2. 初始建立(client端发起第一条消息)
1.2.1 Server端收到的消息
之后从client端发送第一条消息给server端,通过打印查看server端收到的消息,以及notification。
-
第一条收到的是association建立起来的Notification
COMMUNICATION UP -
第二条才是client端发送的数据
Data trunk -
第三条收到一条notification通知说没有数据可以发送了
SENDER_DRY -
最后会收到一系列的Address change的notification
PEER_ADDRESS_CHANGE
是不是因为multi-home的原因,多个地址都可以使用了
1.2.2 Client端收到的消息
-
Client发出消息后,第一条收到的是一个notification通知communication up
-
接着收到一个nitification通知没有数据了
-
最后收到server端回传的消息
1.3. 如果Client意外中断退出程序
Server会收到一个notification通知association shutdown
1.4. 如果Server意外中断退出程序
先前association已经建立好了。server突然中断退出。
这个时候client不会收到任何通知,如果client继续往client发送消息
-
收到SCTP shutdown事件
-
收到association shutdown事件
-
收到can not start association事件
-
收到SCTP发送失败事件
网友评论