Нужно протестировать программу, которая принимает UDP пакеты с определенных адресов. Если адрес нужный, сообщение разбираем.
Пишу тестовую программу, в которой создается несколько Udp сокетов и отсылается сообщение.
В классе QAbstractSocket есть метод setLocalAddress(const QHostAddress & address) [protected], который вроде бы должен подменять адрес отправителя. Но в Wireshark-e вижу, что адрес не подменяется.
Можно ли сделать такую подмену в принципе?
Как это сделать на С++/Qt?
setLocalAddress можно установить только адреса, присутствующие на локальных интерфейсах. Произвольный адрес установить нельзя. Т.о. можно либо добавить нужный адрес локальному интерфейсу (например с помощью ifconfig add), либо открыть "сырой" сокет и формировать заголовки IP и UDP самостоятельно.
Скорее всего никак, потому что используя такие либы Вы находитесь слишком высоко от драйверов.
Посмотрите pcap библиотеку(но она работает не со всеми сетевыми картама) и делайте что требуется.
Послать пакет, в котором в заголовке будет неродной адрес никто не запрещает(разве что оборудование через которое вы плюете пакеты в общественную сеть).