0

Solaris OS で SCTP テスト プログラムを作成しており、Solaris ネイティブ SCTP スタックを使用しています。プログラムはこれが好きです:

if ((fd = socket(AF_INET, SOCK_SEQPACKET, IPPROTO_SCTP)) < 0) {
    perror("socket");
}  
addr.sin_family = AF_INET;
addr.sin_port = htons(9004);
addr.sin_addr.s_addr = inet_addr("192.168.23.117");
if (sctp_bindx(fd, (struct sockaddr*)&addr, sizeof(struct sockaddr_in), SCTP_BINDX_ADD_ADDR) < 0) {
    perror("bind");
}  

プログラムを実行すると、常にエラーが返されます:「引数が無効です」。gdb を使用して確認したところ、addr 構造が正しいことがわかりました。
Solaris はオープン ソースではないため、gdb を使用してアセンブリ コードを確認することしかできず、sctp_bindx が setsockopt 関数を呼び出し、setsockopt 関数がエラーを返すことがわかりました。呼び出し元の setsockopt は次のようになります。

setsockopt(fd, SOL_SCTP, SCTP_ADD_ADDR, addrs, addrs_size);  

すべてのパラメーターを確認しましたが、正しいことがわかりました。したがって、この問題の原因を突き止めることはできません。誰でも私を助けることができますか?前もって感謝します!

4

1 に答える 1