C语言编程 我已经能够使用
创建一对多风格的 SCTP 连接clientsockfd = socket(AF_INET, SOCK_SEQPACKET, IPPROTO_SCTP);
能够使用相同的单个套接字(绑定到单个本地 IP 和端口)向多个服务器发送连接和发送消息
发送消息时,我在每条消息中使用目标 ip:端口,
int res = sctp_sendmsg(clientsockfd, message, strlen(message), (struct sockaddr*)&server_addr1, sizeof(server_addr1), 0, SCTP_ADDR_OVER, 0, 0, 0);
现在我只想关闭这两个连接中的一个,我检查了 sctp 手册/api 参考文档。 它建议使用 SCTP_EOF 或 SCTP_ABORT 标志与特定的连接/关联 ID,我尝试了很多组合,但它导致两个连接都 ABORT。 有什么建议吗?
sctp_sendmsg(clientsockfd, NULL, 0,NULL, 0, 0, SCTP_ABORT,asso_id,0,0);
和
sctp_sendmsg(clientsockfd, NULL, 0,(struct sockaddr*)&server_addr1, 0, 0, SCTP_ABORT,(uint16_t)sp.spinfo_assoc_id,0,0);
我读到此消息已被弃用。
gcc(Ubuntu 11.4.0-1ubuntu1~22.04)11.4.0
错误是,我没有传递 server_addr1 的长度,作为 sctp_send() 调用中的第 5 个参数
sctp_sendmsg(clientsockfd, NULL, 0,(struct sockaddr*)&server_addr1, 0, 0, SCTP_ABORT,(uint16_t)sp.spinfo_assoc_id,0,0);
工作 API 调用
sctp_sendmsg(clientsockfd, NULL, 0,(struct sockaddr*)&server_addr1,sizeof(server_addr1) , 0, SCTP_ABORT,(uint16_t)sp.spinfo_assoc_id,0,0);