Posted on 2012-05-21 09:14
C小加 阅读(1634)
评论(1) 编辑 收藏 引用 所属分类:
网络编程
通过一个控制台应用程序实例来演示初始化Windows Sockets并输出得到的版本信息。
#include<iostream>
#include<winsock2.h>//使用Winsock 2.2 版本
#pragma comment (lib,"ws2_32.lib")
#include<stdlib.h>
using namespace std;
int main()
{
WSADATA wsadata;//WSADATA结构体中主要包含了系统所支持的Winsock版本信息
if( WSAStartup( MAKEWORD(2,2),&wsadata )!=0 )//初始化Winsock 2.2
{
cout<<"WSAStartup无法初始化!"<<endl;
return 0;
}
//使用Winsock实现网络通信
//显示wsadata中的数据
printf("Version: %d.%d\n",LOBYTE(wsadata.wVersion),HIBYTE(wsadata.wVersion));//注释1
printf("High Version: %d.%d\n", LOBYTE(wsadata.wHighVersion),HIBYTE(wsadata.wHighVersion) );//注释2
printf("Description: %s\n",wsadata.szDescription );//注释3
printf("System Status: %s\n",wsadata.szSystemStatus );//注释4
//最后应该做的清理工作
if(WSACleanup()==SOCKET_ERROR)
printf("WSACleanup出错\n");
system("pause");
return 0;
}
注释1:
字段wVersion:Windows Sockets DLL期望调用者使用的Windows Sockets规范的版本,为WORD类型。高位字节中存储副版本号,地位字节中存储主版本号。调用LOBYTE()函数可以返回WORD类型数据的地位字节,从而获取主版本号;调用HIBYTE()函数可以返回WORD类型数据的高位字节,从而获取副版本号。
注释2:
字段wHighVersion:Windows Sockets DLL 可以支持的Windows Sockets 规范的最高版本。
注释3:
字段szDescription:以null结尾的ASCLL字符串。Windows Sockets DLL将对Windows Sockets实现的描述复制到该字符串中,最多可以包含256个字符。
注释4:
字段szSystemStatus:以null结尾的ASCLL字符串,Windows Sockets DLL将有关状态或配置信息复制到该字符串中。
其他字段及其含义:
字段iMaxSockets:单个进程可以打开的最大Socket数量。Windows Sockets可以提供一个全局的Socket,为每个进程分配Socket资源。程序员可以使用该数字作为Windows Sockets是否可以被应用程序使用的原始依据。
字段iMaxUdpDg:Windows Sockets应用程序能够发送或接受的最大UDP数据包大小,单位为字节。如果实现方式没有限制,则iMaxUdpDg等于0。
字段lpVendorInfo:指向销售商数据结构的指针。