我一直在尝试学习使用c进行套接字编程,但我遇到了一些困惑的事情。我写了这段代码:
int main(int argc, char *argv[]) {
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
int opt = 1;
if(sockfd == -1) {
printf("socket error\n");
exit(EXIT_FAILURE);
}
if(setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt))) {
printf("setsockopt error\n");
exit(EXIT_FAILURE);
}
int getOpt;
socklen_t getOptLen = sizeof(getOpt);
getsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &getOpt, &getOptLen);
printf("%d\n", getOpt);
}
我原本期望它会打印出1,因为这是我传给setsockopt的值,但是它却打印出了4。SO_REUSEADDR的布尔值被存储为4吗?我是否错误地使用了getsockopt?