Я занимаюсь разработкой многопользовательской онлайн-игры. Он хорошо работает, когда я тестирую его в локальной сети, но перед тем, как выпустить его, я хотел бы проверить, как работает пользовательский интерфейс для тех, кто не имеет такого хорошего соединения с сервером. Как я могу имитировать плохое интернет-соединение с высокой задержкой, низкой пропускной способностью, дрожанием и случайной потерей пакетов в локальной среде?
networking
testing
Philipp
источник
источник
Ответы:
Я думаю, Dummynet - это то, что вы ищете. Dummynet - это инструмент эмуляции сети, который может симулировать ограничения полосы пропускания, задержки, потери пакетов и многое другое. Вы можете легко выбрать, какой трафик вы хотите перехватить, и настроить ограничения, например, чтобы ограничить весь входящий трафик TCP до 2 Мбит / с, который вы делаете.
Вы видите, что выбор трафика осуществляется известным брандмауэром ipfw, а каналы предоставляют функции ограничения.
Он доступен для FreeBSD, Linux и Windows.
источник
Сетевой кондиционер
Если вы работаете на Mac, вы можете использовать Network Link Conditioner.
Вы можете моделировать различные случаи плохого подключения к Интернету, в том числе Edge и 3G.
Кроме того, вы можете создавать свои собственные профили со своими настройками:
Это бесплатно скачать в XCode (перейдите в XCode → Open Developer Tool → More Tools Developer… и загрузите Hardware IO Tools для XCode ).
источник
Если вы работаете в Linux, вы можете использовать netem для моделирования всех возможных проблем с сетью, таких как высокая задержка, низкая пропускная способность, потери пакетов и многие другие.
Для Windows есть опция NetLimiter, но я ее не использовал, поэтому не могу ручаться за нее.
Только что нашел приложение Mac под названием SlowlyApp .
источник
Неуклюжий , для Windows Vista и 7.
источник
Если вы работаете в Windows, вы можете попробовать SoftPerfect Connection Emulator . По сути, это драйвер, который внедряется между вашим приложением и сетевым уровнем (аналогично Wireshark / WinPCAP) для выбранного сетевого адаптера и может имитировать ограниченную пропускную способность, задержку, потерю пакетов и другие вещи. Пользовательский интерфейс прост и понятен.
Это коммерческий продукт, но пробная версия позволяет вам делать 30-секундные всплески "помех", которые должны быть достаточно хороши, чтобы вы могли судить, выполняет ли этот инструмент то, что вам нужно.
Другой кросс-платформенный вариант - DummyNet , который ведет себя аналогичным образом (через ipfw), но немного менее прост в использовании.
Я думаю, что эту часть вопроса можно было бы переформулировать как «как мне справиться с задержкой в сети в моем приложении?» Одним из наиболее часто используемых и эффективных методов является Dead Reckoning . Связанная статья объясняет это лучше, чем я, но основная идея состоит в том, что ваши клиенты как бы «симулируют», где должна быть каждая сущность и что она должна делать с помощью алгоритма. Всякий раз, когда объект отклоняется от этого алгоритма (т. Е. Ввод игрока, событие на стороне сервера и т. Д.), Он отправляет обновление каждому клиенту.
источник
Я не использовал это некоторое время, но я использовал Чарльза для проверки этого. Это приложение с различными инструментами диагностики сети, включая моделирование упомянутых вами проблем: «плохое интернет-соединение с высокой задержкой, низкой пропускной способностью, дрожанием и случайной потерей пакетов»
источник
Если вы разбираетесь в Fiddler и интересуетесь только HTTP / 1, вы можете написать это.
Fiddler не поддерживает HTTP / 2, перехват с ним приведет к снижению всего трафика HTTP до HTTP / 1.
источник