sctp心搏的超时以及重传控制

satanaelzhou 2010-09-27 05:52:33
问题:1. 开启了sctp的心搏机制,在偶联对端B意外关闭,并且没有向本端A发送shutdown消息,属于意外的非法关闭。现在A会一直向B发送心跳。A收到的包是ICMP目标不可达。心跳会一直发送5次。

我使用了struct sctp_paddrparams pathmaxrxt;中的spp_pathmaxrxt来设置为1。
以及struct sctp_assocparams assocmaxrxt;sasoc_asocmaxrxt来设置为1。

但是这两个地方好像都没起作用:
这是一个示例:
struct sctp_assocparams assocmaxrxt;
memset(&assocmaxrxt,0,sizeof(assocmaxrxt));
assocmaxrxt.sasoc_asocmaxrxt = 2;
setsockopt(sockfd, IPPROTO_SCTP, SCTP_ASSOCINFO, &assocmaxrxt,sizeof(assocmaxrxt));//sockfd有效。

2. 在发送完5次的心跳的时候,触发事件 address 不可达。我在这里close了socket,但是sctp会继续发送shutdown 5次才关闭。这是为什么

感谢大家踊跃顶贴
...全文
491 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
satanaelzhou 2010-09-28
  • 打赏
  • 举报
回复
咋没人回哪~~~ 难道真的要我研究sctp源码~~~~大侠们 现身吧
satanaelzhou 2010-09-28
  • 打赏
  • 举报
回复
不能沉啊~~~
satanaelzhou 2010-09-28
  • 打赏
  • 举报
回复
问题解决~ 答案参见lksctp的内核实现~~~先get并完整的给结构体赋值,再set自己想要改变的地方~~
哎 落寞的帖子啊~~~~

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧