Socket API函数介绍:WSAStartup与WSACleanup函数详解

网安智编 厦门萤点网络科技 2025-08-15 00:05 92 0
前言 几种典型的应用编程接口 API 抽象 struct sockaddr_in { u_char sin_len; // 地址长度 u_char sin_family; // 地址族 u_short sin_port; /...

前言

在这里插入图片描述

在这里插入图片描述

几种典型的应用编程接口

API

抽象

在这里插入图片描述

struct sockaddr_in {
	u_char sin_len;	// 地址长度
	u_char sin_family;	// 地址族
	u_short sin_port;	// 端口号
	struct in_addr sin_addr;	// IP地址
	char sin_zero[8];	// 保留位,置0
}

API 函数(为例)

函数

使用的应用程序在使用之前必须首先调用函数

int WSAStartup(WORD wVersionRequested,LPWSADATA IpWSAData);

两个参数:

第一个参数指明程序请求使用的版本,其中高位字节指明副版本、低位字节指明主版本。 第二个参数返回实际的的版本信息

例:使用2.1版本的的程序代码段

wVersionRequested = MAKEWORD(2, 1);
err = WSAStartup(wVersionRequested, &wsaDara);

函数

应用程序在完成对请求的库的使用,最后要调用函数,解除与库的绑定,释放库所占用的系统资源。

int WSACleanup(void)

函数

创建套接字,操作系统返回套接字描述符(sd)

sd = socket(protofamily, type, proto);

第一个参数(协议族):对于TCP/IP协议族, = (TCP/IP) 第二个参数(套接字类型) 第三个参数(协议号):0为默认

在这里插入图片描述

函数

关闭一个描述符为sd的套接字,如果多个进程共享一个套接字,调用将套接字引用计数减1,减至0才关闭。

int closesocket(SOCKET sd);

一个进程中的多线程对一个套接字的使用无计数:如果进程中的一个现场调用将一个套接字关闭,该进程中的其他线程也将不能访问该套接字。

Bind 函数

getsockopt函数_Socket API函数_WSAStartup函数用法

绑定套接字的本地端点地址:IP地址+端口号

int bind(sd, localaddr, addrlen);

函数

置服务器端的流套接字处于监听状态。

int listen(sd, queuesize);

函数

客户端程序调用函数来使客户套接字(sd)与特定计算机的特定端口(saddr)的套接字(服务)进行连接。其仅用于客户端。

int connect(sd, saddr, saddrlen);

函数

服务端调用函数从处于监听状态的流套接字sd的客户连接请求队列中取出排在最前的一个客户请求,并且创建一个新的套接字来与客户端套接字创建连接通道。

newsock = accept(sd, caddr, caddrlen);

利用新创建的套接字()与客户通信,保证服务器可以并发。

send、 函数

send函数TCP套接字(客户与服务器)或调用了函数的UDP客户端套接字。

函数用于UDP服务器端套接字与未调用函数的UDP客户端套接字。

send(sd, *buf, len, flags);
sendto(sd, *buf, len, flags, destaddr, addrlen);

recv、 函数

recv函数从TCP连接的另一端接收数据,或者从调用了函数的UDP客户端套接字接收服务器发来的数据。

函数从UDP都武器端套接字与未调用函数的UDP客户端套接字接收对端数据。

recv(sd, *buffer, len, flags);
recvfrom(sd, *buf, len, flags, sendaddr, saddrlen);

、 函数

() 函数用来设备套接字sd的选项参数

()函数用于获取任意类型、任意状态套接口的选项当前值,并把结果存入。

int setsocketopt(int sd, int level, int optname, *optval, int optlen);
int getsocketopt(int sd, int level, int optname, *optval, socklen_t optlen);

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

数据解析网络字节顺序

TCP/IP 定义了标准的用于协议头中的二进制整数表示:网络字节顺序( byte order)。