常用API 的一般使用方法、常用的数据结构(持续更新)

1. recvfrom函数

1.1函数原型:

ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen);

1.1函数功能:

读取指定的套接字sockfd中的内容,并将其存储到buf指定的缓冲区中。

1.2 函数参数:

1.2.1 sockfd

需要接受数据的套接字的文件描述符。

1.2.2 buf

指定接受的数据 存储的位置(缓冲区)。

1.2.3 len

指定接受的数据 存储的缓冲区的长度。一般写为sizeof(buf)。

1.2.14 flags

一般指定为0。

1.2.5 src_addr

需要将接收数据的套接字的地址格式 指定为通用套接字地址

1.2.6 addrlen

将 传递过来的通用套接字结构体变量的长度 存储的位置。 一般需要事先定义一个变量,然后调用这个函数时,将这个变量的地址作为函数的该参数。

1.3 函数返回值:

  • 接收数据成功:则返回实际接收到的字符数。
  • 接收数据失败:返回-1,错误原因会存于errno 中。

2. socket函数

2.1 函数原型

#include <sys/socket.h>                                                                                                     int socket(int domain, int type, int protocol);  

2.2 函数功能

创建套接字。

2.3函数参数

2.3.1 domain

指定通信特性,通常以AF_开头(Adress Family)。常用的可选参数

  • AF_INET: 代表通信的地址格式为IPv4
  • AF_LOCAL:系统内部通信
2.3.2 type

确定套接字的类型,进一步确定通信特性。常用的可选参数:

  • SOCK_DGRAM: 固定长度的、无连接的、不可靠的通信(默认的实现协议:UDP)
  • SOCK_STREAM:有序、可靠、双向、面向链接的通信。(默认的实现协议:TCP)
2.3.3 protocol:

通常指定为0,即为给定的domain、套接字类型选择默认的协议。

2.4 函数返回值

  • 成功: 返回套接字文件描述符
  • 失败: 失败返回-1

3. sockaddr_in 结构体

使用场景:

  • 绑定套接字时使用。
struct sockaddr_in { 
   short int sin_family;
   unsigned short int sin_port; 
     struct in_addr sin_addr;
     unsigned char sin_zero[8];
}
struct in_addr { 
	unsigned long s_addr;
}  

4. bind函数

4.1 函数原型

#include <sys/socket.h>
int bind(int socket, const struct sockaddr *address,
       socklen_t address_len);

4.1 函数功能

套接字 与指定的 套接字地址 绑定起来。

4.2 函数参数

4.2.1 socket

需要绑定的套接字描述符。

4.2.2 address

需要绑定的 服务器端的 套接字的地址,需要强转成 通用套接字地址格式。

4.2.3 address_len

需要绑定的 服务器端的 套接字的地址 的长度。 一般指定为sizeof(服务器地址)。

4.3 函数返回值

  • 绑定成功: 返回0
  • 绑定失败:返回-1

5. inet_addr 函数

5.1函数原型

#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
in_addr_t inet_addr(const char *cp); 

5.2 函数功能

将字符串 ip 地址 装换为二进制形式。

5.3 函数参数

  • cp:字符串,一般指定需要访问的ip 的字符串

5.4 函数返回值

返回字符串ip地址的 二进制形式。

6.inet_pton函数

6.1 函数原型

 #include<arpa/inet.h>
 int inet_pton(int af, const char *src, void *dst);

6.2 函数功能

将af 指定的通信格式的 字符串地址src 转换成 二进制格式并存储到dst 指定的区域内。

6.3 函数参数

6.3.1 af

指定地址的通信特性。例如:AF_INET 即IPv4 格式。

6.3.1 src

指定需要转换的字符串,一般传递字面量即可。

6.3.3 dst

指定转换后存储的位置。

6.4 函数返回值

  • 转换成功:返回1
  • src不合法:返回0
  • af不合法:返回-1
原文地址:https://www.cnblogs.com/lasnitch/p/12764136.html