如何将源IP地址设置为0.0.0.0
How can I set the source IP address to 0.0.0.0?
我想写一个简单的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…)设置。
内核通过在出口接口上用IP"免费"填充源地址来为您提供服务。
如果你不想这样做,你可能不得不使用原始套接字,并用IP_HDRINCL
提供你自己的IP头。查找SOCK_RAW
。
一个简单的欺骗方法是strace
或truss
您的DHCP客户端,看看它做了什么。
相关文章:
- 循环中的变量被设置为下一个数组的元素始终具有相同的内存地址?
- C 指针设置为地址,但莫名其妙地指出了程序的不同部分中的不同值
- 如何设置指针的内存地址
- 如何在NS3中设置节点的IP地址和数据?
- C 将值设置为特定地址
- 设置成员 GlobalCEFApp->OnWebKit使用函数地址初始化 C++生成器
- 将结构元素地址设置为C 中的null(单链接列表)
- 在C++中设置节点的内存地址
- 定义一个C宏并将内存地址设置为用C和C++编写的结构成员
- 从指针数组的元素传递地址以设置另一个指针地址
- mfc c++通过编辑控件设置另一个应用程序的HWND地址
- 如何将数组中元素的地址设置为指向另一个数组中的特定元素
- 如何将源IP地址设置为0.0.0.0
- 正在将IPv4/IPv6地址和端口设置为sockaddr_storage结构
- 在 Boost ASIO 中,如何设置源 IP 地址以模拟其他服务器的 IP 地址?
- 为什么我不能为我的 QTcpServer 设置特定地址?
- 将指针设置为 nullptr 是否会影响指向同一地址的其他指针
- 在c或c++中,如何区分在内存地址上设置的0和由于该地址未初始化而设置的0
- 设置随机内存地址的值
- 如何在Windows中设置存储在内存地址中的陷阱