Можно ли связать сокет UDP на нескольких портах?привязка гнезда UDP к нескольким портам
Я знаю, что ответ может быть НЕТ, но мне это нужно.
У меня есть несколько потоков UDP (многоадресной передачи) на разных портах для приема, и я хочу, чтобы порядок приема пакетов между различными потоками был одинаковым пакетом заказов, достигнутым для NIC.
С привязкой к порту каждого порта кажется невозможным, поскольку порядок чтения пакетов из потоков будет зависеть от буферов приема UDP и того, как потоки выполняются для приема пакетов из разных потоков.
Я ищу решение на Java, но, если возможно, только на C, я переключусь на это.
Пожалуйста, помогите мне в этом.
РЕДАКТИРОВАТЬ
Порядок мне нужно, потому что я разработке приложения на MPEG TS (H.222), который будет remultiplex TS потоков, полученных от различных многоадресных в единый поток (MPTS), а затем повторно передает как один поток. И я хочу, чтобы смешанные пакеты из разных потоков были в очень точном порядке, при этом очень немного не по порядку.
Если я захвачу пакеты из нескольких многоадресных рассылок, чтобы они достигли NIC, я могу получить точный порядок, при этом очень немногие из них выходят из строя из-за промежуточных неудобств от источника к моему приложению. Очень немногие из не по порядку не проблема. И все источники многоадресной рассылки и мое приложение находятся только в локальной сети.
Когда многоадресные потоки имеют низкую скорость, скажем, около 20 Мбит/с, все работает нормально. Но когда многоадресные потоки имеют очень высокую скорость, скажем, более 50 Мбит/с, некоторые потоки приемника могут работать бездействия из-за процессора, даже если у него есть пакеты для приема из UDP. И когда поток простаивает, скажем, около 50 мс, с 60 Мбит/с, через 50 мс будет много данных, которые будут создавать промежутки за это время из этого потока в финальной очереди.
Вы ответили на свой вопрос. Это невозможно в Java, а не в C. Функциональность для заказа пакетов на основе заказа, который они получили в NIC, не существует в стеке IP или API сокета. Обычно это обрабатывается путем включения порядкового номера в полезную нагрузку и переупорядочения пакетов на основе этого. – nos
Почему вы хотите сохранить заказ пакетов? Для UDP это не то. –