Posted on 2012-05-21 09:14
C小加 閱讀(1675)
評論(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:指向銷售商數據結構的指針。