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

时间:2015-03-05 12:43:36

标签: c++ linux sockets dhcp

我想编写简单的DHCP客户端(将通过WLAN工作),我在正确发送初始消息DHCP DISCOVER时遇到问题 - 它被发送(我在捕获WLAN接口时在Wireshark中看到它) ,但源地址是我的适配器的地址。如何将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 ...)设置的。

1 个答案:

答案 0 :(得分:5)

内核通过填充&#34;免费提供服务。退出接口上带有IP的源地址。

如果您不想要,您可能必须使用原始套接字并使用IP_HDRINCL提供您自己的IP标头。寻找SOCK_RAW


欺骗这个问题的一个简单方法是向{001}客户端stracetruss查看它的作用。

相关问题