0

sctpのソケットを作成してから、sctp_opt_info()を使用してソケットオプション情報を取得しようとしています。

特定のソケットを正常に作成できましたが、ソケットオプションの取得時に、エラーを示す-1として値を取得しています。エラーは、sctp_opt_info()の無効な引数が原因です。

誰かが私に何が悪いのか教えてもらえますか?この呼び出しで0ではなく-1を取得するのはなぜですか(成功インジケーター)

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として取得していますが、これは問題があることを示しています。恐怖は、sctp_opt_info()の無効な引数を示しています。私の推測では、この関数の引数2ですが、確かではありません。

どんな助けでもありがたいです。

ありがとう

4

1 に答える 1

1

len、toの最後のパラメーターsctp_opt_info()はvalue-resultパラメーターです。少なくとも、渡したパラメータの長さに初期化する必要があります。

len = sizeof rto;
于 2010-12-21T18:07:56.367 に答える