setsockopt的原型是:
int setsockopt(int socket,int level,int option_name,const void * option_value,socklen_t option_len);
以下都是正确的吗?哪个不是?
a . )int buffsize = 50000; setsockopt(s,SOL_SOCKET,SO_RCVBUF,(char *)&buffsize,sizeof(buffsize));
b . )int buffsize = 50000; setsockopt(s,SOL_SOCKET,SO_RCVBUF,(void *)&buffsize,sizeof(buffsize));
c . )char * buffsize =“50000”; setsockopt(s,SOL_SOCKET,SO_RCVBUF,buffsize,strlen(buffsize));
d . )setsockopt(s,SOL_SOCKET,SO_RCVBUF,“50000”,5);
1 回答
SO_RCVBUF
选项定义为参数类型为int
,因此(c)和(d)不正确 .因为C会自动将
int *
转换为const void *
,所以不需要强制转换:但是,因为
char *
和void *
也会自动转换,(a)和(b)也应该有效 .