Что если я хочу, чтобы другое приложение, совершенно отдельный процесс использовал те же привязки?
Обычно каждое приложение получает свои собственные привязки с другим локальным портом.
Итак, можно ли запустить другое приложение, чтобы привязать порт UDP к L-Port1?
Вы получите ошибку привязки сокета, если другой процесс имеет сокет, связанный с тем же локальным портом. Есть способы обойти это, но читайте дальше, это не то, что вы, вероятно, хотите.
Если это так, будут ли оба приложения (STUN) и это другое приложение получать сообщения от удаленных серверов с назначением, настроенным на IP1 и Port1 (с точки зрения удаленного сервера)?
Вы можете использовать опцию SO_REUSEADDR. Однако, если у вас есть два процесса с сокетами для одного и того же локального порта UDP, входящие пакеты для этого порта будут маршрутизироваться в любой сокет. (Первый, кто вызвал recvfrom, получает пакет, иначе он недетерминирован).
А тот, кто не понимает тип или метод сообщения, просто игнорирует его? Это так нормально работает?
номер
Я думаю, что вы говорите, что вы выполняете STUN в одном процессе, но хотите, чтобы реальное приложение, которое использует эти привязки, запускалось в другом процессе. Просто сделайте, чтобы ваше приложение само выполняло привязки STUN и просто повторно использовало сокет для данных. Если вы попытаетесь мультиплексировать данные STUN и приложения через один и тот же сокет, вам понадобится (ваш) код, чтобы различать их.