码迷,mamicode.com
首页 > 其他好文 > 详细

检查所有套接字选项的main函数

时间:2015-05-24 17:27:46      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:socket

代码如下:

int main(int argc, char **argv)
{
int fd;
socklen_t len;
struct sock_opts *ptr;
for (ptr = sock_opts, ptr->opt_str != NULL; ptr++)
{
printf("%s:", ptr->opt_str);
if (ptr->opt_val_str == NULL)
printf("(undefined)\n");
else
{
switch (ptr->opt_level)
{
case SOL_SOCKET:
case IPPROTO_IP:
case IPPROTO_TCP:
fd = Socket(AF_INET, SOCK_STREAM, 0);
break;
#ifdef IPV6
case IPPROTO_IPV6:
fd = Socket(AF_INET6, SOCK_STREAM, 0);
break;
#endif
#ifdef IPPROTO_SCTP
case IPPROTO_SCTP:
fd = Socket(AF_INET, SOCK_SEQPACKET, IPPROTO_SCTP);
break;
#endif
default:
err_quit("Can‘t create fd for level %d\n", ptr->opt_level);
}
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));
close(fd);
}


}
exit(0);
}


技术分享sock_str_flag函数:将标志选项转换为字符串

static char strres[128];

static char*

sock_str_flag(union val *ptr,int len)

{

    if(len!=sizeof(int))

         snprintf(strres,sizeof(strres),"size (%d) not sizeof(int)",len);

   else

     snprintf(strres,sizeof(strres),"%s",(ptr->i_val==0)?"off":"on");

return (strres);

}

检查所有套接字选项的main函数

标签:socket

原文地址:http://blog.csdn.net/wangfengfan1/article/details/45953329

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!