C小加

厚德 博学 求真 至善 The bright moon and breeze
posts - 145, comments - 195, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

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




Feedback

# re: windowsSocket编程学习(2):一个简单的Socket程序  回复  更多评论   

2012-05-21 11:23 by SunRise_at
受教了。

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理