Информация о создании сокета и опциях сокета - PullRequest
0 голосов
/ 21 декабря 2010

Я пытаюсь создать сокет 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 (). Я думаю, это второй аргумент этой функции, хотя я не уверен.

Любая помощь будет оценена.

Спасибо

1 Ответ

1 голос
/ 21 декабря 2010

len, последний параметр sctp_opt_info() является параметром значения-результата.Вы должны по крайней мере инициализировать его до длины передаваемого параметра,

len = sizeof rto;
...