# Socket基础一:获取主机IP地址

作者:刘磊 2020.4.24   参考书目:《Windows网络编程》刘琰等著

一、套接字是什么

Windows Sockets是Windows环境下的网络编程接口,最初源于UNIX环境下的BSD Socket,是一个与网络协议无关的编程接口。
  Windows 套接字为程序员提供了一套简单的API,Windows Sockets定义了程序员能够使用并且网络软件供应商能够实现的一套库函数调用和相关语义。
  Windows Sockets API是Windows提供给基于套接字的网络应用程序开发的接口。在这里插入图片描述

二、Sockets编程接口

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

三、Windows Sockets DLL的初始化和释放

使用任何Windows Sockets API调用前,必须先调用启动函数WSAStartup()来完成Windows Sockets DLL的初始化,目的是:协商版本支持,分配必要资源。完成对Windows Sockets DLL的使用后,必须调用函数WSACleanup()来实现释放为自己分配的资源。

1、WSAStartup()函数

函数原型:

   WSAStartup(
       _in wVersionRequested, 
       _out lpWSAData
  );

参数说明:
   wVersionRequested[in]: Windows Sockets API版本号
   lpWSAData[out]: 指向WSADATA数据结构的指针,用来接收Windows Sockets实现细节。
返回值:
   成功 - 0
   失败 - 返回错误码
具体操作:
第一步:创建类型为WSADATA的对象。

WSADATA wsaData;

第二步:调用函数WSAStartup(),并根据返回值判断错误信息。

int iResult;   
iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);   
if (iResult != 0)			
{
   			
	printf("WSAStartup failed: %d\n", iResult);			
	return 1;   	
}

PS:MAKEWORD(a, b)是将两个byte型合并成一个word型,b在高8位,a在低8位。例如,a = 2 = 0000 0010, b = 1 = 0000 0001,合起来就是 1 0000 0010

2、WSACleanup()函数

每一次WSAStartup()函数启动,必须对应一个WSACleanup()释放。
函数原型:

int WSACleanup(void);

返回值:
   成功 - 0    
   失

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值