Хорошо, поэтому мне нужно мое приложение на C++, чтобы сделать одноранговое UDP-соединение. Я рассмотрел перфорирование отверстий и UPNP (используя сопоставление портов). Отверстие в отверстиях кажется немного грязным: вам нужен сервер, тонны пакетов UDP для мусора. I действительно не хочу связываться с сервером, поэтому я выбрал UPNP. Я построил miniupnpc http://miniupnp.free.fr/ библиотеку и счастливо использовал ее дома. Но когда я попробовал мое приложение в другой сети, у меня очень расстраивают результаты:Одноранговое соединение, когда одно одноранговое соединение за NAT
- только 1 (мой) маршрутизатор делает все, что нужно (локальный & внешнего IP, отображение портов)
- 3 маршрутизаторов только покажите мне локальный IP-адрес, и, возможно (я не проверял) делают порт отображения
- 1 маршрутизатор поддерживает UPnP, но miniupnpc не смог найти устройство
- 1 маршрутизатор не поддерживает UPnP (проверено с помощью инструментов разработчика UPnP)
Итак, у меня есть 2 вопроса:
- Является ли UPNP не очень распространенным я, или мне просто не повезло, или с помощью miniupnpc неправильно?
- Есть ли другие способы сделать равный-равному соединение UDP, который не требует внешнего сервера? (Так что не перфорирования)
Спасибо!