WEB开发网
开发学院软件开发VC WinSock学习笔记 阅读

WinSock学习笔记

 2010-05-25 20:36:43 来源:WEB开发网   
核心提示:3、设置socket属性:int setsockopt(SOCKET s,int level, int optname,const char FAR * optval, int optlen)s为欲设置属性的套接字,level为套接字选项的级别,WinSock学习笔记(4),用法同上,optname为设置选项的名称op

3、设置socket属性:

int setsockopt(SOCKET s,int level, int optname,const char FAR * optval, int optlen)

s为欲设置属性的套接字。

level为套接字选项的级别,用法同上。

optname为设置选项的名称

optval为存放选项值的缓冲区指针。

optlen为缓冲区的长度

用法:

int ttl=32; //设置TTL值
int rc = setsockopt( s, IPPROTO_IP, IP_TTL, (char *)&ttl, sizeof(ttl));

套接字的使用步骤

1、启动Winsock:对Winsock DLL进行初始化,协商Winsock的版本支持并分配必要的

资源。(服务器端和客户端)

int WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData )
wVersionRequested为打算加载Winsock的版本,一般如下设置:
wVersionRequested=MAKEWORD(2,0)
或者直接赋值:wVersionRequested=2
LPWSADATA为初始化Socket后加载的版本的信息,定义如下:
typedef struct WSAData {
WORD wVersion;
WORD wHighVersion;
char szDescription[WSADESCRIPTION_LEN+1];
char szSystemStatus[WSASYS_STATUS_LEN+1];
unsigned short iMaxSockets;
unsigned short iMaxUdpDg;
char FAR * lpVendorInfo;
} WSADATA, FAR * LPWSADATA;

如果加载成功后数据为:

wVersion=2表示加载版本为2.0。
wHighVersion=514表示当前系统支持socket最高版本为2.2。
szDescription="WinSock 2.0"
szSystemStatus="Running"表示正在运行。
iMaxSockets=0表示同时打开的socket最大数,为0表示没有限制。
iMaxUdpDg=0表示同时打开的数据报最大数,为0表示没有限制。
lpVendorInfo没有使用,为厂商指定信息预留。

该函数使用方法:

WORD wVersion=MAKEWORD(2,0);
WSADATA wsData;
int nResult= WSAStartup(wVersion,&wsData);
if(nResult !=0)
{
//错误处理
}

2、创建套接字:(服务器端和客户端)

SOCKET socket( int af, int type, int protocol );
af为网络地址类型,一般为AF_INET,表示在Internet域中使用。
type为套接字类型,前面已经介绍了。
protocol为指定网络协议,一般为IPPROTO_IP。

用法:

SOCKET sock=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
if(sock==INVALID_SOCKET)
{
//错误处理
}

上一页  1 2 3 4 5 6 7  下一页

Tags:WinSock 学习 笔记

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接