基于Windows平台的套接字实现

1.3 基于Windows平台的套接字实现

Windows的套接字大部分是参考BSD系列UNIX套接字设计的,因此和Linux相似。因此只需要修改一部分网络程序内容,就可以将Linux的程序放到Windows去运行。

同时学习Linux和Windows的原因

大部分项目是在Linux部署的服务器端,大多数的客户端又是在Windows下开发的。因此学习网络编程需要兼顾WindowsLinux平台。

设置头文件和库
#include <winsock2.h>

链接ws2_32.lib

以VS2022为例,点击项目,最下面的属性,然后选择连接器,选择输入,附加依赖项中添加ws2_32.lib

Winsock的初始化
#include <winsock2.h>
int WSAStartup(
    WORD wVersionRequested,//Winscok的版本信息
    LPWSADATA lpWSAData//WSADATA结构体变量的地址值
    );

对于第一个参数:Winsock存在多个版本,所以需要传入版本信息(WORD是通过typedef定义的unsigned short类型)。若版本是1.2,则其中1是主版本号,2是副版本号,需要传入0x0201。即高八位为副版本号,低八位为主版本号。同时可以借助MAKEWORD()

MAKEWORD(1,2);// return 0x0201
MAKEWORD(2,2);// return 0x0202

对于第二个参数:此参数中需要传入WSADATA型结构体变量地址,LPWSADATA是该类型的指针类型,调用完函数后,相应参数中将填充已初始化的库信息。虽然没有特殊含义,但是为了调用函数,必须传递WSADATA结构体变量地址。

int main (int argc, char* argv[])
{
    WSADATA wsaData;
    /****************/
    if(WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
        ErrorHanding();
    /****************/
    return 0;
}

使用下方函数即可注销该库

#include <winsock2.h>
int WSACleanup(void);//成功返回0,否则SOCKET_ERROR

注意,调用后将无法再次调用Winsock相关函数。通常在程序结束前调用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值