• 常用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
  • 相关阅读:
    重剑无锋
    PHP session用redis存储
    Beego 和 Bee 的开发实例
    谁是最快的Go Web框架
    Go语言特点
    计算机组成原理之机器
    Elasticsearch 健康状态处理
    Elasticsearch 的一些关键概念
    Elasticsearch 相关 api 操作
    Elasticsearch 在 windows 和 ubuntu 下详细安装过程
  • 原文地址:https://www.cnblogs.com/lasnitch/p/12764136.html
Copyright © 2020-2023  润新知