0
getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen)
の性質を理解しようとしています。
私はSO_DEBUG
の初期状態を確認しようとしていますが、このリンクhttps://www.mkssoftware.com/docs/man3/getsockopt.3.aspを参照しています。ランダムな値を取得しているため、これを正しく実行しているかどうかはわかりません。あなたは有効な変数(ない初期化されていないポインタ)のアドレスを渡す必要がoptval
の値取得するにgetsockoptを使用してSO_DEBUGオプションの初期値を確認する
//***********************************************Libraries****************************************************************
#include <iostream>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <string.h>
#include <errno.h>
using namespace std;
//************************************************************************************************************************
int main()
{
int * optval;
int optionDebug = 0;
socklen_t optlen;
int sockFD;
sockFD = socket(AF_INET, SOCK_STREAM ,0);
optlen =sizeof(optval);
int udpFD;
udpFD = socket(AF_INET, SOCK_DGRAM,0);
optionDebug = getsockopt(sockFD, SOL_SOCKET, SO_DEBUG, optval, &optlen) ;
cout<<"My value "<< *optval<<endl;
return 0;
}
私は上記の修正を行い、私のプログラムの出力は0でした。それは、ソケットを作成したときにSO_DEBUGオプションが最初にfalseに設定されたことを意味しますか? – Swornim1
@ Swornim1おそらくはい。 'setsockopt()'を適用した後に値を再読み込みしてみてください。 – user0042