【发布时间】:2019-06-17 15:03:37
【问题描述】:
在 netinet/ip.h 中有一个结构“ip”,用于传输 IP 数据包。地址字段是“ip_src”和“ip_dest”。
如果我的 IPv4 地址按网络顺序排列在一个无符号字节数组中,我是否可以安全地将这个数组直接复制到 ip_src 和 ip_dest?
例如,如果我向 23.45.167.92 发送数据包,并且我有以下 unsigned char[4]:
destination_ip[0] = 23;
destination_ip[1] = 45;
destination_ip[2] = 167;
destination_ip[3] = 92;
然后我可以安全地这样做吗:
struct ip my_packet_header;
my_packet_header.ip_dest = *((ip_addr*)destination_ip);
“安全”是指它可以在大端和小端机器上运行。
【问题讨论】:
-
什么是ip_addr?
-
memcpy()会更合适,恕我直言(避免演员阵容和对齐问题) -
它将是destination_ip的地址,而不是其中的字节。
标签: c networking ip