gpt4 book ai didi

c++ - 如何将源IP地址设置为0.0.0.0?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:51:57 25 4
gpt4 key购买 nike

我想编写简单的 DHCP 客户端(它将在 WLAN 上工作)并且我在正确发送初始消息 DHCP DISCOVER 时遇到问题 - 它已发送(我在捕获时在 Wireshark 中看到它WLAN 接口(interface)),但源地址是我的适配器的地址。如何将 IP 设置为“0.0.0.0”?

这是我的部分代码:

    sockaddr_in src_addr;
memset(&src_addr, 0, sizeof(struct sockaddr_in));
src_addr.sin_family = AF_INET;
src_addr.sin_port = htons(m_sport);
src_addr.sin_addr.s_addr = htonl(INADDR_ANY);
status = bind(m_sockfd, reinterpret_cast<sockaddr *>(&src_addr), sizeof(sockaddr_in));

当我尝试 src_addr.sin_addr.s_addr = inet_addr("0.0.0.0"); 时,源地址仍然设置为 eth0 (10.132...)。

最佳答案

内核通过在退出接口(interface)上“免费”填充带有 IP 的源地址来为您提供服务。

如果您不想这样做,您可能必须使用原始套接字并使用 IP_HDRINCL 提供您自己的 IP header 。 .寻找SOCK_RAW .


一个简单的作弊方法是 stracetruss 您的 DHCP 客户端,看看它做了什么。

关于c++ - 如何将源IP地址设置为0.0.0.0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28878158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com