Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Сети > UDP пакеты через роутер |
Автор: kibr3 7.9.2011, 14:49 | ||
Не могу послать UDP пакеты через роутер помогите. Есть 2 простые программы. Одна посылает UDP пакеты (Client) другая принимает (Server). Через порт 5904 или любой другой свободный. Все это прекрасно работает в локальной сети. Чтобы проверить как работает через интернет сделал следующее. В Map-e Роутерa прописал пересылать все пакеты (TCP и UDP) приходящие извне на порт 5904 на внутренний адрес 192.168.0.4. Проверил это из браузера (TCP/IP) через внешний прокси сервер - все хорошо, связь есть. Но вот посылаю UDP пакеты на свой внешний IP по порту 5904 и они теряются и не доходят вообще. По идее должны же приходить? Или я что-то не понимаю. Программа Client консоли для Visual C ниже.
|
Автор: Олег2005 9.9.2011, 21:29 |
Рутер получает пакет, анализирует его - и как видит порт 5904 - меняет адрес получателя на 192.168.0.4 - и далее должен отослать пакет по этому же самому порту (т.е. приложению, идентифицированному этим портом). Вроде так. Надо сниффером посмотреть - приходят ли на карточку вообще пакеты... |
Автор: kibr3 10.9.2011, 05:52 | ||
Сниффером посмотрел. Если посылаю на внешний IP роутера то пакеты идут. Но далее тишина. Да еще заметил что когда посылал на свой же IP 192.168.0.4 якобы для проверки то пакеты вообще не шли в сеть но запущенный UDP сервер принимал все. То есть дальше сетевой карты не уходило. Выходит даже для первичной проверки надо отсылать из другого компа в локльной сети. Но так у меня тоже работает. Тут шеф (менеджер) оказывается бывший сетевик и провайдер говорит что нынешние модемы не могут пересылать никакие данные изнутри по внешнему IP даже если замаппировано. Вот раньше у него был модем-роутер от Cisco который это умел через какие-то настройки. Щас ищу варианты проверки своей UDP программульки и игр с ним. Надо посылать и принимать откуда-то извне пакеты. Варианты: 1. Apach сервер с реальным IP ставить у себя как предлагает шеф не хочется. Долго возиться. 2. Socks5 прокси. Но там тоже надо протокол связи с ним фигачить. Хорошо бы библиотеки иметь для него. 3. Взять хостинг с поддержкой socket_sendto и подобных функций но это Shell access и за недорого пока не нахожу. Какие есть идеи на этот счет? |
Автор: Олег2005 12.9.2011, 17:40 | ||||
Согласен. Но ведь никто заранее не скажет мне, что на порту 55555 сидят 10 машин? Поэтому попробовать всегда надо.... Но вот когда не получается - надо искать иные способы. А это непросто. Добавлено @ 17:42
Это все-таки оптимальнее всех иных методов. Да и не так сложно поднять Апач. |