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

#include <netinet/in.h>

#include <netinet/in.h>,这是一个标准的网络编程头文件,用于定义 IP 地址、协议以及与网络接口相关的数据结构和常量。它主要用于在基于 IPv4 和 IPv6 的网络编程中。

#include <netinet/in.h> 的作用

<netinet/in.h> 头文件包含了处理网络地址的定义和一些网络协议的相关常量,用于支持基于 IP(特别是 IPv4 和 IPv6)的网络编程。它提供了一些关键的数据结构和宏,如:

常见的结构和宏:

struct sockaddr_in:用于表示 IPv4 地址的结构体,常用于定义套接字绑定或连接的地址。

struct sockaddr_in {sa_family_t    sin_family;  // 地址族 (AF_INET)in_port_t      sin_port;    // 端口号 (使用 htons() 来转换字节序)struct in_addr sin_addr;    // IP 地址
};
  • struct sockaddr_in6:用于表示 IPv6 地址的结构体。

  • struct in_addr:用于存储 IPv4 地址。

struct in_addr {uint32_t s_addr;  // 32 位 IPv4 地址 (使用 inet_addr() 等函数设置)
};
  • INADDR_ANY:表示通配的 IPv4 地址,通常用于服务器套接字,表示绑定到所有可用的网络接口。

  • htons()ntohs():用于在主机字节序和网络字节序之间转换 16 位短整数(通常用于端口号)。

  • inet_addr()inet_ntoa():用于在点分十进制的 IPv4 地址和二进制格式之间进行转换。

示例代码:

以下是一个简单的示例,展示如何使用 netinet/in.h 中的结构体和函数:

#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <iostream>int main() {// 创建一个套接字int sockfd = socket(AF_INET, SOCK_STREAM, 0);if (sockfd < 0) {std::cerr << "Failed to create socket\n";return -1;}// 定义服务器的地址结构体struct sockaddr_in server_addr;server_addr.sin_family = AF_INET;              // 使用 IPv4server_addr.sin_port = htons(8080);            // 指定端口号,使用 htons() 转换server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");  // 指定服务器 IP 地址// 尝试连接服务器if (connect(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0) {std::cerr << "Connection failed\n";close(sockfd);return -1;}// 发送数据const char* message = "Hello, Server!";send(sockfd, message, strlen(message), 0);// 关闭套接字close(sockfd);return 0;
}

在这个示例中,<netinet/in.h> 中的 sockaddr_ininet_addr() 被用来设置服务器的 IP 地址和端口号。


http://www.mrgr.cn/news/24768.html

相关文章:

  • Reduce:一款开源的短网址平台!!【送源码】
  • 虚幻引擎 | (类恐鬼症)玩家和NPC语音聊天
  • 【C++】C++ 多态的底层实现原理
  • Window 本地启动Nacos
  • Windows本地部署ollama并实现无公网IP远程运行qwen大语言模型
  • 【操作系统】二、进程管理:4.死锁(银行家算法、系统安全状态、静态分配策略、资源有序分配法)
  • 模拟面试后端开发复盘
  • kvm 虚拟机命令行虚拟机操作、制作快照和恢复快照以及工作常用总结
  • 《OpenCV计算机视觉》—— 身份证号码识别案例
  • 演化式原型开发-系统架构师(六十五)
  • 【PyTorch入门·求导相关】一文解释 PyTorch的求导 (backward、autograd.grad)
  • es6(1)
  • 深入探讨-JavaScript-逻辑赋值运算符
  • I.MX6U裸机-汇编LED灯实验
  • 微服务网关全能进化:设计模式加持下的Spring Cloud Alibaba落地实践(三)
  • 动态规划(一)——斐波那契数列模型
  • [java][struts2]03Struts2配置处理结果(result)总结
  • 2024年华为杯数学建模研赛 最全赛中助攻|选题建议+思路+代码+成品论文预定
  • 【强化学习环境搭建】mujoco,mujoco_py,d4rl等强化学习相关资源安装及使用的参考资料链接 持续更新ing
  • 建筑电焊工模拟试题(单选题附答案)