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

sockaddr_in

        在网络编程中,sockaddr_in 结构体是用于表示 IPv4 地址的套接字地址结构。它定义在 <netinet/in.h> 头文件中,是 sockaddr 结构体的一个特化版本,专门用于处理 IPv4 地址。

下面是 sockaddr_in 结构体的典型定义:

struct sockaddr_in {sa_family_t sin_family;   // 地址族,对于 IPv4 应为 AF_INETin_port_t sin_port;     // 端口号struct in_addr sin_addr;  // IPv4 地址char sin_zero[8];        // 填充至 sizeof(struct sockaddr)
};
  • sin_family:指定地址族,对于 IPv4 地址,这个字段通常设置为 AF_INET

  • sin_port:指定端口号,用于标识特定的服务或应用程序。端口号可以是网络字节序(big-endian)或主机字节序,通常使用 htons() 函数从主机字节序转换为网络字节序。

  • sin_addr:是一个 in_addr 结构体,包含实际的 IPv4 地址。in_addr 结构体通常包含一个 s_addr 字段,这是一个 32 位的无符号整数,用于存储 IPv4 地址。

  • sin_zero:一个 8 字节的数组,用于将 sockaddr_in 结构体填充至 sockaddr 结构体的大小,以确保兼容性。

示例:初始化 sockaddr_in 结构体

以下是一个初始化 sockaddr_in 结构体并将其用于绑定套接字的示例:

#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>int main() {int sockfd;struct sockaddr_in local;// 创建套接字sockfd = socket(AF_INET, SOCK_STREAM, 0);if (sockfd < 0) {perror("socket creation failed");return 1;}// 初始化 sockaddr_in 结构体local.sin_family = AF_INET;       // 地址族为 IPv4local.sin_port = htons(8080);    // 端口号为 8080,使用 htons 转换为网络字节序local.sin_addr.s_addr = INADDR_ANY; // 任意本地地址// 绑定套接字到本地地址if (bind(sockfd, (struct sockaddr *)&local, sizeof(local)) < 0) {perror("bind failed");close(sockfd);return 1;}// 监听连接请求if (listen(sockfd, 5) < 0) {perror("listen failed");close(sockfd);return 1;}// 接受连接等后续操作...// 关闭套接字close(sockfd);return 0;
}

        在这个示例中,我们创建了一个 TCP 套接字,并使用 sockaddr_in 结构体指定了本地地址和端口。然后,我们使用 bind() 函数将套接字绑定到本地地址和端口。INADDR_ANY 表示套接字可以接收来自任何本地地址的连接请求。

http://www.xdnf.cn/news/9185.html

相关文章:

  • 08_预处理与缩放
  • 关于 smali:1. Smali 基础语法入门
  • 一款不错的嵌入式开发自动化测试平台
  • Trivy 镜像漏洞扫描:从零入门到实战指南
  • java基础(面向对象进阶高级)泛型(API一)
  • 智能AI之常用协议普及
  • HarmonyOS优化应用文件上传下载慢问题性能优化
  • CMU-15445(5)——PROJECT#1-BufferPoolManager-Task#3
  • kali切换为中文
  • 输入一串字符,统计其中字母的个数
  • Python5.26打卡(day27)
  • 【SQL server】 SQL子查询:与连接的区别、类型划分、相关与非相关子查询对比
  • YOLOv12增加map75指标
  • [QMT量化交易小白入门]-五十七、ETF历史行情分钟线下载
  • 25盘古石初赛wp(部分)
  • Java----自动装箱和自动拆包 与 泛型
  • 大模型的检索增强生成综述研究
  • 用python写节奏大师小游戏
  • TMS320F28388使用sysconfig配置SCI通信(RS485+FIFO+Modbus)
  • 第4章-操作系统知识
  • 《反事实棱镜:折射因果表征学习的深层逻辑》
  • SymPy | 其他未知数表示方程中的某一未知数
  • 测绘技术重塑低空经济格局
  • 火语言UI组件--标记
  • 蚂蚁TuGraph图数据库行业落地,开启数据处理新“视界”
  • MySQL进阶实战:窗口函数 VS 聚合函数,性能与场景全对比
  • Java 版本升级指南:从 Java 8 到 Java 11/17/21 的核心优势与新特性
  • ABAP Tools for Clean ABAP
  • dify-api的.env配置文件
  • 前端配置nginx代理