windowsSocket編程學習(2):一個簡單的Socket程序
Posted on 2012-05-21 09:14 C小加 閱讀(1673) 評論(1) 編輯 收藏 引用 所屬分類: 網(wǎng)絡編程通過一個控制臺應用程序?qū)嵗齺硌菔境跏蓟?/span>Windows Sockets并輸出得到的版本信息。 注釋1: 字段wVersion:Windows Sockets DLL期望調(diào)用者使用的Windows Sockets規(guī)范的版本,為WORD類型。高位字節(jié)中存儲副版本號,地位字節(jié)中存儲主版本號。調(diào)用LOBYTE()函數(shù)可以返回WORD類型數(shù)據(jù)的地位字節(jié),從而獲取主版本號;調(diào)用HIBYTE()函數(shù)可以返回WORD類型數(shù)據(jù)的高位字節(jié),從而獲取副版本號。 注釋2: 字段wHighVersion:Windows Sockets DLL 可以支持的Windows Sockets 規(guī)范的最高版本。 注釋3: 字段szDescription:以null結尾的ASCLL字符串。Windows Sockets DLL將對Windows Sockets實現(xiàn)的描述復制到該字符串中,最多可以包含256個字符。 注釋4: 字段szSystemStatus:以null結尾的ASCLL字符串,Windows Sockets DLL將有關狀態(tài)或配置信息復制到該字符串中。 其他字段及其含義: 字段iMaxSockets:單個進程可以打開的最大Socket數(shù)量。Windows Sockets可以提供一個全局的Socket,為每個進程分配Socket資源。程序員可以使用該數(shù)字作為Windows Sockets是否可以被應用程序使用的原始依據(jù)。 字段iMaxUdpDg:Windows Sockets應用程序能夠發(fā)送或接受的最大UDP數(shù)據(jù)包大小,單位為字節(jié)。如果實現(xiàn)方式?jīng)]有限制,則iMaxUdpDg等于0。 字段lpVendorInfo:指向銷售商數(shù)據(jù)結構的指針。
#include<winsock2.h>//使用Winsock 2.2 版本
#pragma comment (lib,"ws2_32.lib")
#include<stdlib.h>
using namespace std;
int main()
{
WSADATA wsadata;//WSADATA結構體中主要包含了系統(tǒng)所支持的Winsock版本信息
if( WSAStartup( MAKEWORD(2,2),&wsadata )!=0 )//初始化Winsock 2.2
{
cout<<"WSAStartup無法初始化!"<<endl;
return 0;
}
//使用Winsock實現(xiàn)網(wǎng)絡通信
//顯示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
//最后應該做的清理工作
if(WSACleanup()==SOCKET_ERROR)
printf("WSACleanup出錯\n");
system("pause");
return 0;
}