网络编程——打开网络库

栏目: 服务器 · 发布时间: 6年前

内容简介:client/server——客户端/服务器模型参数1:数据类型:WORD 转定义:unsigned short

C/S模型

client/server——客户端/服务器模型

网络头文件

#include <winsock2.h>    /*函数声明*/
  • windows socket 第二版,目前网络库的版本有1.0、1.1、2.0、2.1、2.2
  • winsock.h第一版网络库

网络库

#pragma comment(lib,"ws2_32.lib");  /*函数实体*/
  • ws2_32.lib:windows socket第二版 32位, 没有ws2_64.lib (32/64位都是用这个)
  • winsock.h第一版网络库对应的是wsock32.lib

打开网络库

/*启动网络库,启动了这个库,库里的函数才能被使用*/
int WSAStartup(
    WORD wVersionRequired,  /* 库的版本 */
    LPWSADATA lpWSAData     /* 返回配置信息 */
);

参数1: 使用的网络库的版本

数据类型:WORD 转定义:unsigned short

WORD wdVersion = MAKEWORD(2,1);   //MAKEWORD(主版本,副版本)

define MAKEWORD(a, b)

makeword是将两个byte型合并成一个word型,一个在高8位(b),一个在低8位(a)

参数2: 系统通过这个参数返回给我们一些配置信息

数据类型:WSADATA 转定义是一个结构体

typedef struct WSAData {
        WORD                    wVersion;   /* 使用的版本 */
        WORD                    wHighVersion; /* 系统能提供的最高版本 */
#ifdef _WIN64
        unsigned short          iMaxSockets;  /* 返回可用的socket数量,2版本后没用了 */
        unsigned short          iMaxUdpDg;  /* UDP数据报信息的大小,2版本后没用了 */
        char FAR *              lpVendorInfo;   /* 供应商特定的信息,2版本后没用了 */
        char                    szDescription[WSADESCRIPTION_LEN+1];
        char                    szSystemStatus[WSASYS_STATUS_LEN+1];  /* 当前库的描述信息 */
#else
        char                    szDescription[WSADESCRIPTION_LEN+1];
        char                    szSystemStatus[WSASYS_STATUS_LEN+1];
        unsigned short          iMaxSockets;
        unsigned short          iMaxUdpDg;
        char FAR *              lpVendorInfo;
#endif
} WSADATA, FAR * LPWSADATA;

返回值

  • 成功——返回 0
  • 失败——返回 错误码
错误码 原因
WSASYSNOTREADY 系统配置问题,重启下电脑,检查ws2_32库是否存在,或者是否在环境配置目录下
WSASYSNOTREADY 要使用的版本不支持
WSAEPROCLIM 已达到对Windows套接字实现支持的任务数量的限制
Windows Sockets 实现可能限制同时使用它的应用程序的数量
WSAEINPROGRESS 当前函数运行期间,由于某些原因造成阻塞,会返回在这个错误码,其他操作均禁止
WSAEFAULT 函数参数写错了

校验版本

HIBYTE(wsaData.wVersion) :HIBYTE是高位->副版本

//校验版本
if (2 != HIBYTE(wdScokMsg.wVersion) || 2 != LOBYTE(wdScokMsg.wVersion))
{
    WSACleanup();     //说明版本不对,释放网络库
    return 0;
}

打开网络库代码

WORD wdVersion = MAKEWORD(2,2);  /*网络库版本*/
WSADATA wdSockMsg;   /*返回配置信息*/
int nRes = WSAStartup(wdVersion,&wdSockMsg);

流程图

网络编程——打开网络库


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Learning JavaScript

Learning JavaScript

Shelley Powers / Oreilly & Associates Inc / 2006-10-17 / $29.99

As web browsers have become more capable and standards compliant, JavaScript has grown in prominence. JavaScript lets designers add sparkle and life to web pages, while more complex JavaScript has led......一起来看看 《Learning JavaScript》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试