2010-08-28 3 views
1

У меня есть локальный сервер, написанный на C++, который прослушивает входящие TCP-соединения, используя простые сокеты :: accept() и UDP recvfrom(). У меня есть две проблемы с этим, которые я хочу решить:Создание локального сервера, видимого через брандмауэры

  • Могу ли я программно заставить Windows разрешить мне открывать сокет accept без его автоматического блокирования брандмауэром Windows (программного обеспечения)?
  • Есть ли какие-либо порты, которые я могу использовать, что позволит моим пакетам проходить через брандмауэр Windows и внешний брандмауэр? Порт 80 часто воспринимается такими вещами, как Skype, но есть ли другие? Как правило, большинство внешних брандмауэров по умолчанию разрешают входящий UDP и TCP подключается к порту 80?

Спасибо!

ответ

1

Возможно, вы захотите посмотреть на что-то более благоприятное для настольных сред, таких как методы обхода NAT, такие как libjingle, STUN или наложенная сеть, такая как XMPP.

+0

Интересные вещи, о которых я никогда не слышал; будет изучать его. –

1

В общем, сетевым маршрутизаторам требуется Port Forwardng для порта прослушивания, а брандмауэрам нужен открытый порт прослушивания. Если вы используете брандмауэр/маршрутизатор с поддержкой uPNP, то вы можете динамически настроить эти параметры с помощью API uPNP. Но больше времени, чем нет, uPNP либо отключен, либо недоступен, требуя ручных настроек администратором firewll/router.

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