Я знаю, что у вас есть пара хороших надежных ответов, но знаете ли вы о # -операторе в препроцессоре C?
Это позволяет вам сделать это:
#define MACROSTR(k) #k
typedef enum {
kZero,
kOne,
kTwo,
kThree
} kConst;
static char *kConstStr[] = {
MACROSTR(kZero),
MACROSTR(kOne),
MACROSTR(kTwo),
MACROSTR(kThree)
};
static void kConstPrinter(kConst k)
{
printf("%s", kConstStr[k]);
}
Мы использовали это программное обеспечение однажды в Виртуальной машине, чтобы сделать некоторое тестирование масштаба пропускной способности:
http://www.softinengines.com/index.php?section=download&langu=en
Это не свободно, но действительно имеет 30-дневную пробную версию.
Попробуйте , WANem
WANem является Эмулятором Глобальной вычислительной сети, предназначенным для обеспечения реального опыта Глобальной вычислительной сети / Интернет, во время разработки приложений / тестирующий по среде LAN.
я произвел впечатление Charles сеть, отладив приложение прокси и имел большой успех в эмуляции сетевой задержки. Это работает над Windows, Mac и Linux.
дроссель Пропускной способности / средство моделирования Пропускной способности
Charles может использоваться для корректировки пропускной способности и задержки Интернет-соединения. Это позволяет Вам моделировать модемные условия с помощью высокоскоростного соединения.
пропускную способность можно отрегулировать к любым произвольным байтам в секунду. Это позволяет любой скорости соединения моделироваться.
задержка может также быть установлена на любое произвольное число миллисекунд. Задержка задержки моделирует задержку, испытанную на более медленных соединениях, который является задержкой между выполнением запроса и запросом, получаемым в другом конце.
Вы могли также использовать VMware для выполнения BSD или Linux и попытки эта статья (DummyNet) или этот.
В прошлом я использовал мост с помощью Linux Netem (Сетевая Эмуляция) функциональность. Это высоконастраиваемо - разрешение введения задержек (первый пример для WAN), потеря пакетов, повреждение, и т.д.
РЕДАКТИРОВАНИЕ: существует также веб-интерфейс MasterShaper для управления настройками.
я отмечаю, что Netem работал очень хорошо на мои приложения, но я также закончил тем, что использовал WANem несколько раз. Обеспеченный загрузочный ISO (и изображения виртуального устройства) сделал его довольно удобным.
Существует превосходная рецензия установки машины FreeBSD, чтобы сделать просто, это - берет Ваш стандартный старый рабочий стол, бросает в дополнительном NIC и сборке.
рецензия доступна в http://www.freebsd.org/doc/en/articles/filtering-bridges/article.html .
На шаге 5 вышеупомянутых инструкций, Вы включаете брандмауэр. Для того, чтобы просто моделировать различное IP-соединение, Вы могли (например), сделать следующее:
Создают файл /etc/rc.firewall.56k
, который содержит следующее:
ipfw add pipe 1 ip from any to any out
ipfw add pipe 2 ip from any to any in
ipfw pipe 1 config bw 56Kbit/s
ipfw pipe 2 config bw 56Kbit/s
И изменение /etc/rc.conf
... заменяют строку
firewall_type="open"
с [1 111]
firewall_type="/etc/rc.firewall.56k"
перезагрузка, и у Вас есть самостоятельно мост 56K!
, Если Вы, оказывается, работаете от Macintosh, что ОС имеет ipfw, встроенный в него по умолчанию. Я сделал то же самое путем маршрутизации сетевого трафика по Аэропорту и через Ethernet, установки его так, чтобы что-либо прибывающее через аэропорт имело те же характеристики как, независимо от того, что я пытаюсь эмулировать. Можно вызвать команды ipfw непосредственно от терминала и получить те же эффекты.
Если вы работаете в Linux, я считаю, что программа Traffic Control очень помогает в подобных делах.
Я бы попробовал использовать netem в Linux. С его помощью вы можете моделировать дополнительную задержку, повреждение, потерю пакетов и дублирование. Он работает даже с устройством обратной петли.