2010-02-03 4 views
1

У меня есть программа сокетов, которая требует, чтобы порт 1002 был открыт, и я хочу знать, как переносить вперед в C++ на windows, поэтому я могу использовать этот порт свободно?Как переместить вперед в C++?

+1

Возможно, вам необходимо установить, почему вы не можете использовать эту программу как есть, и почему вы считаете, что «переадресация портов» является решением вашей проблемы. –

+0

Даже если вы можете переносить свои передачи через порт, вы не сможете обойти запрещенный порт или занятый порт. Вместо этого измените настройки программы сокета. – shinkou

+0

Полуразмерный, но, вероятно, неправильный способ прочитать этот вопрос: «Я пытаюсь сделать http://linux.die.net/man/1/forward компиляцию в Windows, чтобы я мог запускать другую программу, используя другой порт, чем один из них был разработан для использования ». Не уверен, что это имеет отношение к C++. – bk1e

ответ

6

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

Я считаю, что некоторые приложения используют Universal Plug and Play для связи с восходящим маршрутизатором, чтобы открыть порт публично, но вам нужно будет сделать много исследований, чтобы посмотреть, как это делается: у меня нет ни малейшего.

-1

Вы не можете переносить на язык программирования, то есть что-то, что настроено на маршрутизаторе.

+0

UPnP предоставляет XML API для этого; многие (если не все) маршрутизаторы поддерживают это из коробки. – Luke

+0

Если маршрутизаторы не переносят в программное обеспечение, я не уверен, как они справляются с этим ... –

+0

@Jon: очень мило. Учитывая уровень понимания OP, я думаю (как я уверен, вы это сделали) мой вопрос был полезным. – Hogan

3

Итак, вам нужны UPnP или NAT-PMP. В вашей системе могут быть библиотеки для выполнения этих протоколов, или вы можете использовать muniupnp, на котором есть как сервер для работы в Linux, так и BSD для тестирования и клиентская библиотека.

Нет гарантии, что это будет работать, поэтому вам может потребоваться продолжить работу и использовать STUN, TURN или ICE. Там есть библиотека для выполнения этих вещей here.

И всегда помните, иногда это просто невозможно. Внедрите IPv6, иногда это работает, когда IPv4 этого не делает. Поощряйте пользователей устанавливать v6 и Teredo.

1

Начиная с Windows XP, Microsoft предлагает UPnP library. На самом деле это довольно сложно использовать, поскольку библиотека просто предлагает основы взаимодействия с сетевыми устройствами. Вам нужно будет изучить различные UPnP specifications, чтобы выполнять такие специфичные для устройства задачи, как переадресация портов. Поверьте мне, это очень тяжелая работа, чтобы сделать сравнительно мало; лучше просто поместить его в свою документацию где-нибудь, чтобы пользователь мог проконсультироваться с руководством по маршрутизатору, чтобы перенаправить необходимые порты. Это то, что делают почти все.

+0

аминь. это очень сложно –

+0

UPnP сложно использовать в качестве программиста, почти так же сложно, как успешно настроить порт на маршрутизаторе для среднего «DHCP? what's-IP-address»? пользователь. Вы можете также просто получить техническую поддержку, сэкономить некоторое время ;-) NAT и брандмауэры - отличный пример технологии, которая является враждебной к хорошему пользовательскому опыту, для системы и среднего пользователя очень сложно общаться в терминах, которые они оба Понимаю. –

0

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

+0

Мой опыт был в том, что так же просто оставить пользователя искать в Интернете сообщения на форуме, рассказывающие им, какие входящие порты используют приложение ;-) –

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