当前位置: 首页 > article >正文

unix网络编程

unix网络编程

AI出来以后,软件不可能找到工作的,就算找到了也在走下坡路。再过几年,机器人发展起来,连流水线都找不到。人为什么整体不值钱,每个部位却很值钱。你说我初中辍学就去开直播结局会不会比现在好。

更新ing

1. 常用结构体/函数/常量

1. ip地址与端口号

常见常量

//地址族af
AF_INET(IPv4)
AF_INET6(IPv6)

表示 IPv4 地址和端口号的结构体

#include <stdio.h>
#include <arpa/inet.h>
struct sockaddr_in {
    sa_family_t    sin_family;   // 地址族,通常是 AF_INET(IPv4)
    in_port_t      sin_port;     // 端口号(16 位,网络字节序)
    struct in_addr sin_addr;     // IPv4 地址(32 位,网络字节序)
    char           sin_zero[8];  // 填充字段,通常设置为 0
};

struct in_addr {//用于表示ipv4
    in_addr_t s_addr; // 32 位 IPv4 地址(网络字节序)
    //in_addr_t 通常是 uint32_t(32 位无符号整型)。
};

表示 IPv6 地址和端口号的结构体

#include <netinet/in.h>

struct sockaddr_in6 {
    sa_family_t     sin6_family;    // 地址族,IPv6 是 AF_INET6
    in_port_t       sin6_port;      // 端口号
    uint32_t        sin6_flowinfo;  // IPv6 流信息,用于标识数据流的优先级和 QoS(服务质量)
    struct in6_addr sin6_addr;      // IPv6 地址
    uint32_t        sin6_scope_id;  // 接口范围 ID,用于标识链路本地地址的接口,通常为0
};
struct in6_addr {
    union {
        uint8_t  __u6_addr8[16];  // 16 个 8 位无符号整数
        uint16_t __u6_addr16[8];   // 8 个 16 位无符号整数
        uint32_t __u6_addr32[4];   // 4 个 32 位无符号整数
    } __in6_u;                    // 联合体,用于以不同方式访问 IPv6 地址
};

ip地址字符串格式与二进制格式互转(均支持ipv4)

函数功能错误返回值支持 IPv6线程安全
in_addr_t inet_addr(const char *cp);字符串 → 二进制-1✔️
int inet_pton(int af, const char *src, void *dst);字符串 → 二进制0或-1✔️✔️
int inet_aton(const char *cp, struct in_addr *inp);字符串 → 二进制0✔️
const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);二进制 → 字符串null✔️✔️
char *inet_ntoa(struct in_addr in);二进制 → 字符串指向静态缓冲区的指针

端口号网络字节序(大端序)与主机字节序互相转换

#include <arpa/inet.h>
uint16_t htons(uint16_t hostshort); //将主机字节序的端口号转换为网络字节序。
uint16_t ntohs(uint16_t netshort); //将网络字节序的端口号转换为主机字节序。

http://www.kler.cn/a/599174.html

相关文章:

  • 【XPipe】一款好用的SSH工具
  • 丐版插入selectdb模拟
  • Debian,Ubuntu,设置/etc/vim/vimrc.tiny解决:上下左右变成ABCD,backspace退格键失效的问题
  • netplan是如何操控systemd-networkd的? 笔记250324
  • 常见框架漏洞攻略-ThinkPHP篇
  • 搜广推校招面经五十七
  • C语言入门教程100讲(40)文件定位
  • search_fields与filterset_fields的使用
  • 【参考资料 II】C 运算符大全:算术、关系、赋值、逻辑、条件、指针、符号、成员、按位、混合运算符
  • 多线程编程
  • 模糊数学 | 模型 / 集合 / 关系 / 矩阵
  • endnote相关资料记录
  • V8引擎源码编译踩坑实录
  • vue3 如何清空 let arr = reactive([])
  • React Native集成到现有原生Android应用
  • WebGPU实战:Three.js性能优化新纪元
  • SpringMVC请求和响应
  • 练习题:101
  • 腾讯云大模型知识引擎x deepseek:打造智能服装搭配新体验
  • 详解Spark executor