当前位置:软件学习 > 其它软件 >>

windowsSocket编程学习(2):一个简单的Socket程序

通过一个控制台应用程序实例来演示初始化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:指向销售商数据结构的指针。

 

 

摘自 C小加

补充:软件开发 , 其他 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,