linux sctp 模块,Linux下SCTP通信的示例程序

本文详细介绍了SCTP协议中通知机制的工作流程,包括客户端与服务器端建立连接过程中的各类通知事件,如COMMUNICATION_UP、SENDER_DRY及PEER_ADDRESS_CHANGE等,并探讨了在不同异常情况下的通知表现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

9c39a954b077

COMMUNICATION UP

第二条才是client端发送的数据

9c39a954b077

Data trunk

第三条收到一条notification通知说没有数据可以发送了

9c39a954b077

SENDER_DRY

最后会收到一系列的Address change的notification

9c39a954b077

PEER_ADDRESS_CHANGE

是不是因为multi-home的原因,多个地址都可以使用了

1.2.2 Client端收到的消息

Client发出消息后,第一条收到的是一个notification通知communication up

9c39a954b077

接着收到一个nitification通知没有数据了

9c39a954b077

最后收到server端回传的消息

1.3. 如果Client意外中断退出程序

Server会收到一个notification通知association shutdown

9c39a954b077

1.4. 如果Server意外中断退出程序

先前association已经建立好了。server突然中断退出。

这个时候client不会收到任何通知,如果client继续往client发送消息

收到SCTP shutdown事件

9c39a954b077

收到association shutdown事件

9c39a954b077

收到can not start association事件

9c39a954b077

收到SCTP发送失败事件

9c39a954b077

1.5. 如果server根本没有启动,然后client尝试发起请求

9c39a954b077

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值