Posted on 2012-05-21 09:14
C小加 閱讀(1689)
評(píng)論(1) 編輯 收藏 引用 所屬分類:
網(wǎng)絡(luò)編程
通過一個(gè)控制臺(tái)應(yīng)用程序?qū)嵗齺硌菔境跏蓟?/span>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結(jié)構(gòu)體中主要包含了系統(tǒng)所支持的Winsock版本信息
if( WSAStartup( MAKEWORD(2,2),&wsadata )!=0 )//初始化Winsock 2.2
{
cout<<"WSAStartup無法初始化!"<<endl;
return 0;
}
//使用Winsock實(shí)現(xiàn)網(wǎng)絡(luò)通信
//顯示wsadata中的數(shù)據(jù)
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
//最后應(yīng)該做的清理工作
if(WSACleanup()==SOCKET_ERROR)
printf("WSACleanup出錯(cuò)\n");
system("pause");
return 0;
}

注釋1:
字段wVersion:Windows Sockets DLL期望調(diào)用者使用的Windows Sockets規(guī)范的版本,為WORD類型。高位字節(jié)中存儲(chǔ)副版本號(hào),地位字節(jié)中存儲(chǔ)主版本號(hào)。調(diào)用LOBYTE()函數(shù)可以返回WORD類型數(shù)據(jù)的地位字節(jié),從而獲取主版本號(hào);調(diào)用HIBYTE()函數(shù)可以返回WORD類型數(shù)據(jù)的高位字節(jié),從而獲取副版本號(hào)。
注釋2:
字段wHighVersion:Windows Sockets DLL 可以支持的Windows Sockets 規(guī)范的最高版本。
注釋3:
字段szDescription:以null結(jié)尾的ASCLL字符串。Windows Sockets DLL將對(duì)Windows Sockets實(shí)現(xiàn)的描述復(fù)制到該字符串中,最多可以包含256個(gè)字符。
注釋4:
字段szSystemStatus:以null結(jié)尾的ASCLL字符串,Windows Sockets DLL將有關(guān)狀態(tài)或配置信息復(fù)制到該字符串中。
其他字段及其含義:
字段iMaxSockets:?jiǎn)蝹€(gè)進(jìn)程可以打開的最大Socket數(shù)量。Windows Sockets可以提供一個(gè)全局的Socket,為每個(gè)進(jìn)程分配Socket資源。程序員可以使用該數(shù)字作為Windows Sockets是否可以被應(yīng)用程序使用的原始依據(jù)。
字段iMaxUdpDg:Windows Sockets應(yīng)用程序能夠發(fā)送或接受的最大UDP數(shù)據(jù)包大小,單位為字節(jié)。如果實(shí)現(xiàn)方式?jīng)]有限制,則iMaxUdpDg等于0。
字段lpVendorInfo:指向銷售商數(shù)據(jù)結(jié)構(gòu)的指針。