我想了解getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen)
的性质
我正在尝试查看SO_DEBUG
的初始状态,我指的是此链接https://www.mkssoftware.com/docs/man3/getsockopt.3.asp,我不确定我是否以正确的方式执行此操作,因为我得到的是随机值。
//***********************************************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 :(得分:0)
要检索optval
的值,您需要传递有效变量的地址(而不是未初始化的指针):
ExpectedOptType optval;
// ^^^^^^^^^^^^^^^ Put whatever type (probably a enum) is expected for
// the specific option
optionDebug = getsockopt(sockFD, SOL_SOCKET, SO_DEBUG, &optval, &optlen);
// ^
详细了解其工作原理:getsockopt(2)
。