我有一个套接字来接收来自多个客户端的数据。
sockfd = socket(...);
bind(sockfd, ...);
listen(sockfd, ...);
while (true) {
nread = sctp_rcvmsg(sockfd, ..., buf, ..., &info);
assoc_id = sinfo.sinfo_assoc_id;
stream = sinfo.sinfo_stream;
handle_message(assoc_id, stream, buf, nread);
}
我获得了每个连接的关联ID。我的问题是如何在关联ID上发送响应消息而不是使用客户端地址(例如sctp_sendmsg没有关联ID参数)
答案 0 :(得分:1)
来自http://linux.die.net/man/3/sctp_peeloff
int sctp_peeloff(int sd, sctp_assoc_t assoc_id);
sctp_peeloff
将一对多样式套接字assoc_id
上的现有关联sd
分支到单独的套接字中。新的插座是一对一的插座。
例如,当应用程序希望在原始的一对多样式套接字下保留许多偶发消息发送者/接收者时,这是特别理想的,但是将那些携带大量数据流量的关联分支到他们自己的单独的套接字描述符。