2-2 新建socket工程【windows平台】【启动/关闭socket】【socket头文件】

新建socket工程

首页索引C++百万并发网络通信-笔记目录


1-1 头文件的使用

在windows平台下,要引用如下两个头文件

#define WIN32_LEAN_AND_MEAN

#include<Windows.h>
#include<WinSock2.h>

要注意的是,Windows.h中包含1.x版本的套接字宏,如果没有WIN32_LEAN_AND_MEAN这个宏的话,Windows.h会与WinSock2.h中2.x版本的宏冲突。加上WIN32_LEAN_AND_MEAN是微软的建议。

或者如下这种定义也是可以的:

#include<WinSock2.h>
#include<Windows.h>

1-2 windows平台的启动与关闭服务

注意下面main函数中的代码是在windows平台下适用的,如果切换到别的平台下,这些基础代码可能就不适用了。

加入静态链接库的代码也是必须的,这句话也是适用于windows平台,还有另一种方式就是【修改项目的附加依赖项】,也就是下面两张图片里的操作,一旦修改了附加依赖项以后,就可以注释掉#pragma这一句。

完整代码如下,查阅了一下不熟悉的东西:

WSAStartup,即WSA(Windows Sockets Asynchronous,Windows异步套接字)的启动命令。是Windows下的网络编程接口软件Winsock1 或 Winsock2 里面的一个命令(Ps:Winsock 是由Unix下的BSD Socket发展而来,是一个与网络协议无关的编程接口)。

为了在应用程序当中调用任何一个Winsock API函数,首先第一件事情就是必须通过WSAStartup函数完成对Winsock服务的初始化,因此需要调用WSAStartup函数。使用Socket的程序在使用Socket之前必须调用WSAStartup函数。该函数的第一个参数指明程序请求使用的Socket版本,其中高位字节指明副版本、低位字节指明主版本;操作系统利用第二个参数返回请求的Socket的版本信息。当一个应用程序调用WSAStartup函数时,操作系统根据请求的Socket版本来搜索相应的Socket库,然后绑定找到的Socket库到该应用程序中。以后应用程序就可以调用所请求的Socket库中的其它Socket函数了。

函数声明-- int WSAStartup ( WORD wVersionRequested, LPWSADATA lpWSAData );

⑴ wVersionRequested:一个WORD(双字节)型数值,在最高版本的Windows Sockets支持调用者使用,高阶字节指定小版本(修订本)号,低位字节指定主版本号。

⑵lpWSAData 指向WSADATA数据结构的指针,用来接收Windows Sockets 实现的细节。

参考:百度百科

WSADATA,一种数据结构。这个结构被用来存储被WSAStartup函数调用后返回的Windows Sockets数据。它包含Winsock.dll执行的数据。

参考:百度百科

MAKEWORD 宏 平台:SDK这个宏创建一个无符号16位整型,通过连接两个给定的无符号参数。(注:typedef unsigned short WORD;)

WORD MAKEWORD(

BYTE bLow, //指定新变量的低字节序;

BYTE bHigh //指定新变量的高字节序;

);

参考:百度百科

#define WIN32_LEAN_AND_MEAN

#include<Windows.h>
#include<WinSock2.h>

#pragma comment(lib, "ws2_32.lib")//加入静态链接库

int main()
{
	WORD ver = MAKEWORD(2, 2);//WORD版本号
	WSADATA dat;//一种数据结构
	WSAStartup(ver, &dat);//启动windows socket网络环境

	//程序

	WSACleanup();//关闭windows socket网络环境
	return 0;
}

【资源管理器】【项目名称】右键【属性】,左侧【输入】,【附加依赖项】【编辑】,然后输入静态链接库的名称,

在这里插入图片描述

在这里插入图片描述

接着在程序中打一个断点,开始调试,能够观察到如下数据:

在这里插入图片描述

创建的数据版本号:514

当前描述:WinSock2.0,与我们引入的头文件相同

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值