an issue of sctp sctp_getladdrs implementation

see http://www.newsmth.net/bbscon.php?bid=335&id=303282

 

SCTP IPV6 multi homing, ACE5.7不支持,决定我们自己写。
在改一个函数get_localAddrs()时,得到的最后一个地址格式总是不正确。进去看了一下ACE的代码,发现是用的系统函数 sctp_getladdrs,最后只好怀疑这个函数有问题,果然找到了一个链接: https://bugs.launchpad.net/ubuntu/+source/lksctp-tools/+bug/243463
换了一个sctp的新so,问题解决。
1. ACE写的质量不是想象中的好
2. 系统函数也有出问题的时候

 

 

setsockopt函数用于设置socket选项。对于SCTP协议,可以使用SCTP_PEER_ADDR_PARAMS选项来设置SCTP的对端地址参数。这个选项可以用来指定SCTP的关联ID和远程地址。具体的函数签名是: int setsockopt(int sock, int level, int optname, const void *optval, socklen_t optlen); 其中,sock参数是指定的套接字描述符,level参数是指定协议的层次,optname参数是指定的选项名称,optval参数是指向存储选项值的缓冲区的指针,optlen参数是指定选项值的长度。对于SCTPSCTP_PEER_ADDR_PARAMS选项,需要使用SCTP_PEER_ADDR_PARAMS结构体来传递参数。这个结构体包含了关联ID和远程地址等信息。 引用中的sctp_peeloff函数可以从SCTP的关联中分离出一个新的套接字,可以用来处理来自该关联的数据。而引用中的sctp_getladdrs函数用于获取与SCTP关联相关的本地地址。引用中的socket函数用于创建一个SCTP的套接字,可以使用sctp_bindx函数来绑定多个地址到该套接字。 因此,如果要设置SCTP的对端地址参数,可以使用setsockopt函数,并将optname参数设置为SCTP_PEER_ADDR_PARAMS,同时将optval参数设置为指向SCTP_PEER_ADDR_PARAMS结构体的指针,通过这个结构体来传递关联ID和远程地址等信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [inux c学习笔记----SCTP基础客户/服务编程(setsockopt,sctp_sendmsg等)](https://blog.csdn.net/qisefengzheng/article/details/77696296)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值