Я хочу написать простой клиент DHCP (который будет работать через WLAN), и у меня возникла проблема с правильной отправкой исходного сообщения DHCP DISCOVER
- он отправляется (я вижу его в Wireshark при захвате интерфейса WLAN), но исходный адрес адрес моего адаптера. Как установить IP-адрес на «0.0.0.0»?Как установить 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 ...).
Если вы используете Linux, настройки по умолчанию из брандмауэра не позволяют вам обманывать IP-адреса – Gizmo
Зачем вам нужно установить IP на '0.0.0.0'? Это недопустимый IP-адрес и, вероятно, вызовет проблемы с Wireshark. – cybermonkey
@ ʎǝʞuoɯɹǝqʎɔ '0.0.0.0' является допустимым IP-адресом. В контексте dhcp он используется, чтобы указать, что устройству еще не назначен IP-адрес. – HamZa