getsockopt的使用案例
来源:互联网 发布:男士发型设计软件在线 编辑:程序博客网 时间:2024/06/17 05:16
#include <iostream>
#include <string.h>
#include <vector>
#include <winsock2.h>
using namespace std;
#pragma comment(lib,"ws2_32.lib")
union tagval
{
int nVal;
BOOL bVal;
DWORD dwVal;
linger lingerVal;
}val;
static char *sock_str_flag(union tagval* p,int)
{
if(p->bVal!=FALSE)
{
printf("on\n");
}
else
{
printf("off\n");
}
return NULL;
}
static char *sock_str_linger(union tagval* p,int)
{
printf("l_onoff:%d l_linger:%d\n",p->lingerVal.l_onoff,p->lingerVal.l_linger);
return NULL;
}
static char *sock_str_timeval(union tagval*,int)
{
return NULL;
}
static char *sock_str_int(union tagval* p,int)
{
printf("%d\n",p->nVal);
return NULL;
}
struct tagsock_opts
{
const char *opt_str;
int opt_level;
int opt_name;
char * (*opt_val_str)(union tagval*,int);
}sock_opts[]={
{"SO_RCVBUF",SOL_SOCKET,SO_RCVBUF,sock_str_int},
{"SO_BROADCAST",SOL_SOCKET,SO_BROADCAST,sock_str_flag},
{"SO_LINGER",SOL_SOCKET,SO_LINGER,sock_str_linger},
{NULL,0,0,NULL}
};
int main(void)
{
WSADATA wsadata;
WSAStartup(MAKEWORD(2,2),&wsadata);
SOCKET s;
int len;
struct tagsock_opts *ptr;
for(ptr=sock_opts;ptr->opt_str!=NULL;ptr++)
{
switch(ptr->opt_level)
{
case SOL_SOCKET:
s=socket(AF_INET,SOCK_STREAM,0 );
break;
default:
break;
}
if(getsockopt(s,ptr->opt_level,ptr->opt_name,(char*)&val,&len)!=SOCKET_ERROR )
{
printf("%s ",ptr->opt_str);
ptr->opt_val_str(&val,len);
}
else
{
int err=WSAGetLastError();
printf("error:%d\n",err);
}
}
}
#include <string.h>
#include <vector>
#include <winsock2.h>
using namespace std;
#pragma comment(lib,"ws2_32.lib")
union tagval
{
int nVal;
BOOL bVal;
DWORD dwVal;
linger lingerVal;
}val;
static char *sock_str_flag(union tagval* p,int)
{
if(p->bVal!=FALSE)
{
printf("on\n");
}
else
{
printf("off\n");
}
return NULL;
}
static char *sock_str_linger(union tagval* p,int)
{
printf("l_onoff:%d l_linger:%d\n",p->lingerVal.l_onoff,p->lingerVal.l_linger);
return NULL;
}
static char *sock_str_timeval(union tagval*,int)
{
return NULL;
}
static char *sock_str_int(union tagval* p,int)
{
printf("%d\n",p->nVal);
return NULL;
}
struct tagsock_opts
{
const char *opt_str;
int opt_level;
int opt_name;
char * (*opt_val_str)(union tagval*,int);
}sock_opts[]={
{"SO_RCVBUF",SOL_SOCKET,SO_RCVBUF,sock_str_int},
{"SO_BROADCAST",SOL_SOCKET,SO_BROADCAST,sock_str_flag},
{"SO_LINGER",SOL_SOCKET,SO_LINGER,sock_str_linger},
{NULL,0,0,NULL}
};
int main(void)
{
WSADATA wsadata;
WSAStartup(MAKEWORD(2,2),&wsadata);
SOCKET s;
int len;
struct tagsock_opts *ptr;
for(ptr=sock_opts;ptr->opt_str!=NULL;ptr++)
{
switch(ptr->opt_level)
{
case SOL_SOCKET:
s=socket(AF_INET,SOCK_STREAM,0 );
break;
default:
break;
}
if(getsockopt(s,ptr->opt_level,ptr->opt_name,(char*)&val,&len)!=SOCKET_ERROR )
{
printf("%s ",ptr->opt_str);
ptr->opt_val_str(&val,len);
}
else
{
int err=WSAGetLastError();
printf("error:%d\n",err);
}
}
}
0 0
- getsockopt的使用案例
- getsockopt函数的使用
- getsockopt()/setsockopt()函数的使用
- setsockopt与getsockopt的使用
- getsockopt()/setsockopt()函数的使用收藏
- setsockopt getsockopt 对网络设置的使用
- setsockopt/getsockopt使用小记
- 一个getsockopt的Example
- getsockopt
- getsockopt()
- getsockopt
- getsockopt
- getsockopt
- getsockopt
- setsockopt与getsockopt的用法
- setsockopt和getsockopt参数说明和使用
- getsockopt的TCP层实现剖析
- getsockopt的TCP层实现剖析
- 类 - 继承
- JS 中undefined和null的区别
- HDOJ 1176 免费馅饼
- I/O输入与输出函数
- cs231n笔记
- getsockopt的使用案例
- Anti_SG博弈,SJ定理_______John( POJ 3480 )
- 判断星期时间,到达指定时间后执行
- cocoapods的安装
- linux常用命令之ls与tree
- Android 通知栏Notification,NotificationManager,RemoteViews使用流程,自定义通知栏样式简介
- WebStorm 2016.2最新版-破解+汉化教程(20160714)
- 进程和线程
- 执行mvn 报错 source-1.5 中不支持 diamond运算符