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

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); //将网络字节序的端口号转换为主机字节序。

相关文章:

  • annoy编译安装问题及解决
  • 嵌入式八股文学习笔记——C++学习笔记面向对象相关
  • Python第九章节——异常,模块与包
  • leetcode128.最长连续序列
  • Objects.equals() 和 Object.equals() 的区别:
  • 信号处理中的窗
  • 《Python实战进阶》第30集:Scikit-learn 入门:分类与回归模型
  • Pytest的参数化测试
  • Xamarin.Android实现本地化部署DeepSeek的对话功能
  • 【docker】安装SQLServer
  • DrRacket是一款专为Scheme和Racket编程语言设计的集成开发环境(IDE)
  • 重温Docker 构建
  • 3110. 字符串的分数
  • java版嘎嘎快充玉阳软件互联互通中电联云快充协议充电桩铁塔协议汽车单车一体充电系统源码uniapp
  • Thinkphp(TP)漏洞攻略
  • python基础语法中的内置函数与拆包
  • 我的创作纪念日暨六年编程路的回顾
  • Select多路转接
  • 深入理解 Bitmap 索引:原理、场景与应用案例
  • ccf2202邻域均值
  • wordpress批量更换文章的关键字/武汉seo百度
  • 网页源代码在线查看/seo网站优化是什么