您的位置:首页 > 其它

套接口属性设置和获取实例

2011-09-04 01:02 363 查看
/******************************************


程序名称:socketopt.cpp


程序功能:该程序演示了getsockopt()函数和setsockopt()函数用法




changshoumeng */




#include <winsock2.h>


#include <stdio.h>


#include <stdlib.h>


#pragma comment(lib,"ws2_32.lib")


void main()


{


WSADATA wsaData;


SOCKET s;


int optname;//存放选项的值


int optlen;//选项的长度




if(WSAStartup(MAKEWORD(2,2),&wsaData) !=0)


{


printf("Failed to load winsock. \n");


return;


}





s = socket(AF_INET,SOCK_STREAM,0);//创建一个套接口


if(s == INVALID_SOCKET)


{


printf("socket() Error \n");


return;


}




optlen = sizeof(optname);


printf("---------------------------\n");


//获得套接口类型


if(getsockopt(s,SOL_SOCKET,SO_TYPE,(char *)&optname,&optlen) ==SOCKET_ERROR)


{


printf("getsockopt() Error: %u \n",WSAGetLastError());


return;


}


printf("以下信息是由getsockopt()函数取得的SO_SOCKET 级别选项实例\n");


switch(optname)


{


case SOCK_STREAM: printf("SO_TYPE:SOCK_STREAM \n");break;


case SOCK_DGRAM : printf("SO_TYPE:SOCK_DGRAM \n");break;


case SOCK_RAW : printf("SO_TYPE:SOCK_RAW \n");break;


}


//获取接收缓冲区的大小


if(getsockopt(s,SOL_SOCKET,SO_RCVBUF,(char *)&optname,&optlen) ==SOCKET_ERROR)


{


printf("getsockopt() Error: %u \n",WSAGetLastError());


return;


}


printf("SO_RCVBUF:%d \n",optname);




//获取发送缓冲区的大小


if(getsockopt(s,SOL_SOCKET,SO_SNDBUF,(char *)&optname,&optlen) ==SOCKET_ERROR)


{


printf("getsockopt() Error: %u \n",WSAGetLastError());


return;


}


printf("SO_SNDBUF:%d \n",optname);




optname = 16*1024;


//重新设置缓冲区的大小


if(setsockopt(s,SOL_SOCKET,SO_RCVBUF,(char *)&optname,sizeof(optname) )== SOCKET_ERROR)


{


printf("setsockopt() Error: %u \n",WSAGetLastError());


return;


}


//获取重新设置的接收缓冲区的大小


if(getsockopt(s,SOL_SOCKET,SO_RCVBUF,(char *)&optname,&optlen) == SOCKET_ERROR)


{


printf("getsockopt() Error: %u \n",WSAGetLastError());


return;


}


printf("---------------------\n");


printf("使用setsockopt()函数设置后再取得的SO_RCVBUF数值\n");


printf("SO_RCVBUF:%d \n",optname);


printf("---------------------\n");


WSACleanup();




}

转自 http://www.cppblog.com/changshoumeng/archive/2010/05/08/114830.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐