2009-11-12 4 views
10

Если я хочу протестировать набор многоадресных IP-программ (отправитель/получатель) без необходимости настройки сети, можно ли это сделать в том же поле? Если да, то что нужно настроить или сделать по-другому?Есть ли способ протестировать многоадресный IP-адрес на одном поле?

+0

Возможно, VM с мостовым соединением с хостом? – jldupont

ответ

1

Возможно, это не то, что вы ищете, но когда я писал код, который использовал кучу широковещательных и сокетов и т. Д., Я просто создал две виртуальные машины в VMWare, загрузил их с живых компакт-дисков и загрузил мой код. Если ваш код работает в Windows, просто выполните две установки Windows. VMWare помещает машины в одну и ту же подсеть, поэтому связь между ними работает нормально, широковещательно и все. (и я предполагаю многоадресную рассылку, хотя у меня не было прямого опыта с этим.)

0

Необходим некоторый набор настроек сети. Если вы не хотите создавать физическую сеть, вы можете добавить несколько IP-адресов на одну сетевую карту. Если ваш компьютер имеет более одной сетевой карты, вы даже можете создать сеть с двумя картами и концентратором. Кроме того, если на вашем аппарате есть беспроводной интерфейс и проводной интерфейс, то подключение вашего компьютера к беспроводному концентратору через беспроводной и проводной интерфейсы также обеспечит вам сеть.

Надеюсь, что одна из этих идей помогает. Pat O

0

Я бы сказал, что проще всего установить несколько IP-адресов на вашем сетевом адаптере. Просто убедитесь, что вы слушаете конкретный адрес, а не на всех.

НТН

1

Почему бы не скачать пробную версию VMWare? Это займет некоторое время, но настройте виртуальную машину. Затем запустите x-копии виртуальной машины в вашей одной системе (если можете). У каждого будет виртуальный сетевой адаптер. Затем вы можете настроить сеть таким образом, чтобы каждый из них был доступен в одной сети. Затем сделайте свое тестирование.

9

Возможно, вы уже это выяснили (поскольку вопрос сейчас 2 года), но для многоадресной рассылки на одном хосте вам нужно сделать только две вещи: (1) убедитесь, что ваши принимающие многоадресные сокеты имеют SO_REUSEADDR set (чтобы несколько процессов могли связывать один и тот же адрес многоадресной рассылки), и (2) убедитесь, что ваши отправляющие многоадресные сокеты имеют IP_MULTICAST_LOOP (чтобы пакеты были «зациклированы» на приемники в той же системе). Если ваше приложение использует один сокет для отправки и получения многоадресных рассылок, вы должны установить на нем обе опции сокета.

int recv_s = socket(AF_INET, SOCK_DGRAM, 0); 
int send_s = socket(AF_INET, SOCK_DGRAM, 0); 
u_int yes = 1; 
setsockopt(recv_s, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes)); 
setsockopt(send_s, IPPROTO_IP, IP_MULTICAST_LOOP, &yes, sizeof(yes)); 
+0

Можно ли это протестировать и на Android? – zIronManBox

+0

Но какой IP-адрес я использую для одной групповой многоадресной рассылки ???? – LatencyFighter

+0

Вы можете отправить любой многоадресный адрес, который ваша система прослушивает. Для IPv6 ff01 :: 1 - лучший выбор для многоадресной рассылки только для одного хоста. Для IPv4 IP-адреса всех хостов 224.0.0.1 проще всего использовать для тестирования, но если вы хотите развернуть что-то, вы, вероятно, должны выбрать другой адрес, чтобы ваш трафик не был получен хостами, не заинтересованными в вашем трафике. https://en.wikipedia.org/wiki/Multicast_address имеет дополнительную информацию о многоадресных IPv4 и IPv6 адресах. –