- 论坛徽章:
- 0
|
请教两函数:getsockopt和setsockopt
#include <sys/socket.h>;
int getsockopt(int sockfd, int level, int optname, void * optval, socklen_t *optlen);
int setsockopt(int sockfd, int level, int optname, void * optval, socklen_t *optlen);
返回值: 0 --ok -1---erro
sockfd必需指向一个已打开的套接口描述字.
level(级别) 指定系统中解释选项的代码: 普通套接口代码或特定于协议的代码.
optval是一个指向变量的指针,通过它,或由setsockopt取得选项的新值,或由getsockopt存储选项的当前值.此变量的大小由最后一个参数指定.
如:
int
main(argc,argv)
int argc;
char **argv;
{
int fd, len;
struct sock_opts *ptr;
fd = Socket(AF_INET, SOCK_STREAM, 0);
for(ptr = sock_opts; ptr->;opt_str != NULL; ptr++ )
{
printf("%s:", ptr->;opt_str);
if(ptr->;opt_val_str == NULL)
printf("(undefined)\n"
else
{
len = sizeof(val);
if(getsockopt(fd, ptr->;opt_level, ptr->;opt_name, &val, &len) == -1)
{
err_ret("getsockopt error"
}
else
{
printf("default = %s\n", (*ptr->;opt_val_str)(&val, len));
}
}
}
exit(0);
}
-----------------------------------------载自<< unix 网络编程>;>;(第一卷) |
|