我正在尝试创建一个sctp的套接字,然后使用sctp_opt_info()检索套接字选项信息。
我成功地能够创建特定套接字但是在套接字选项检索上我得到的值为-1表示有些错误。该错误是由于sctp_opt_info()的无效参数。
有人可以指导我出错了。为什么我为此次通话获得-1而不是0(成功指标)
int socket_desc;
struct sockaddr_in sin[1];
unsigned int len;
int val1,val2;
char s[100];
struct sctp_rtoinfo {
sctp_assoc_t srto_assoc_id;
uint32_t srto_initial;
uint32_t srto_max;
uint32_t srto_min;
}rto;
socket_desc=socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP);
if (socket_desc==-1)
printf("Socket Fail");
val1 = sctp_opt_info(socket_desc,IPPROTO_SCTP,SCTP_RTOINFO,&rto,&len);
printf("Erro : %d, \n", errno );
perror(s);
printf("Status opt info: %d\n",val1);
我将val1值设为-1表示存在问题。 perror表示sctp_opt_info()的无效参数。我的猜测是这个功能的论证,但不确定。
任何帮助将不胜感激。
由于
答案 0 :(得分:1)
len
,sctp_opt_info()
的最后一个参数是值 - 结果参数。您必须至少将其初始化为您传入的参数的长度,
len = sizeof rto;