Чтобы создать удобный способ тестирования, я хочу создать UDP-прокси, который будет останавливать пакеты, а иногда даже сбрасывать их на свои места. путь к серверу и обратно. Я попробовал это сделать, но поскольку я никогда не использовал асинхронные операции (кроме неблокирующего приема) в Boost ASIO, у меня были некоторые трудности. Текущие результаты можно увидеть здесь: https://github.com/jonlachmann/udp_proxy
Я начинаю понимать, что в моей реализации, вероятно, не так много вещей, например неуважение к тому, кто владеет памятью, передаваемой в обратные вызовы и т. д. Но поскольку есть так много вещей, которые я еще не до конца понимаю, становится трудно понять, в чем заключаются проблемы.
Поэтому, Я пришел сюда, чтобы попросить совета о том, как человек, более знакомый с Boost ASIO, мог бы спроектировать такое решение? Требования:
- прокси-сервер должен иметь возможность принимать несколько клиентов.
- Пакеты должны иметь возможность откладываться или даже удаляться в зависимости от некоторого распределения.
- Сервер должен получать возможные задержанные пакеты, а обратный трафик должен отправляться обратно на прокси для дальнейших задержек/отбрасываний перед отправкой клиенту.
- Прокси-сервер должен отслеживать, какие пакеты с сервера должны быть отправлены. к какому клиенту
Любые ответы помогут мне понять, как я могу изменить мое текущее решение и/или создатель лучшего решения высоко ценим.
Подробнее здесь: https://stackoverflow.com/questions/786 ... -package-d