2016-10-10 7 views
0

У меня проблема, которая сводит меня с ума! И конструктивны, и технологичны. Мне нужно прослушать много многоадресных адресов. Они делятся на 3 группы на предмет, который я контролирую/собираю. Я пошел по пути, когда один процесс раскручивал 100 потоков. Каждый поток использует 2 порта и три адреса/группы. (2 группы находятся на одном порту) Я использую MulticastChannel для каждого порта и используя SELECT для мониторинга данных. (Я использовал датаграмму, но нашел NIO MulticastChannel намного лучше). Во всяком случае, я вижу проблемы, где я могу подписаться на тысячу этих потоков, и данные хорошо звучат. Проблема в том, что через некоторое время некоторые из них перестанут получать данные. Я подтвердил в системе (CentOS), что я все еще подписался на эти адреса, но данные просто прекращаются. У меня есть мониторы в моих потоках, которые отслеживают падение данных и выходят из строя через заголовки RTP. Когда я обнаруживаю, что поток прекратил получать данные, я делаю DROP/JOIN, и данные затем возобновляются.Java многоадресное прослушивание и IGMP

Я думаю, что маршрутизатор на моем пути отбрасывает мою подписку. Я нахожусь на своем конце, написав код, чтобы стабилизировать этот процесс.

Кто-нибудь когда-либо отправлял IGMP соединяется с сетью, чтобы сохранить данные? Возможно ли это или даже разумно.

BTW: компьютер HP DL380 Gen-9 с волоконным соединением 10G с переключателем 6509.

Любые указатели на то, где искать, действительно помогут.

Пожалуйста, не запрашивайте примеры кода.

ответ

2

Операция joinGroup() уже отправляет запросы IGMP в сети. Не нужно отправлять их самостоятельно, и это невозможно в чистой Java в любом случае.

Вы можете экономить на розетках и резьбах. Сокет может объединяться примерно в 20 групп в большинстве операционных систем, и если вы используете NIO и селекторов, в любом случае нет необходимости в более чем одном потоке.

Я использовал дейтаграмму, но нашел NIO MulticastChannel намного лучше).

Я не знаю, что это значит. Если вы ссылаетесь на DatagramSocket, вы не можете использовать его для получения многоадресных рассылок, поэтому предложение бессмысленно. Если вы этого не сделаете, предложение бессмысленно.

 Смежные вопросы

  • Нет связанных вопросов^_^