| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Сети > Соеденить 2е машины за NATами |
| Автор: Kipter 13.4.2009, 01:45 |
| Есть проблема, есть клиент-серверное приложения на 2х компах, они должны както связаться между собой но оба компьютера находяться за NATами, т.е име.т маскарадный IP и до них из интернета не достучаться, установить соеденинение могут только они. Но в данной ситуации не одна из машин не сможет войти в прослушивание =( Какие есть варианты? - Вариант с прокси проблематичен, т.к у меня нет своего прокси сервера, бесплатные нестабильны сегодня етсь завтра их нет, а платные - я не хотел бы деньги на это тратить - Вариант поставить сервер посредник также отпадает у меня нет выделенного сервера в сети интернет. А располагаю я только Хостингом с PHP и Perl скриптами, но общаться через скрипты постоянно делая запрос к серверу - слишком медленно для меня. |
| Автор: Kipter 13.4.2009, 02:06 |
| И дополнительный вопрос по этойже теме: если только одна машина за NATом, возможно ли ей каким-нибудь способом слать данные по UDP? Ведь UDP не устанавливает соеденения... и поидее Маршрутизатор NAT просто не будет знать кому слать пришедшие данные, ведь в его таблицах нет информации о соеденении... либо я сам овтетил на свой вопрос, либо я ошибаюсь и выход какой-нибудь есть. |
| Автор: Rickert 13.4.2009, 03:37 |
| А настроить NAT'а нельзя? Чтоб с определённого порта слал на опред. тачку данные. |
| Автор: Kipter 13.4.2009, 06:48 |
| Увы нет еслибы все так было "просто" я бы так и сделал. Но тут просто проблема множества разных провайдеров которые используют NAT. А программам надобы доконнектиться к друг другу =( Я вообщемто уже полистал множество "литературы" и по моим личным выводам - соеденить 2 NAT клиента - невозможно, ибо чтобы NAT пропустил пакеты с информацией к клиенту - в его таблицах должна быть соответствующая запись, а чтобы клиенту эту запись создать нужно подключиться к серверу имеющему прямой IP =( А даже если 2 клиента подключаться к глобальному 1 серверу, то как связать их сокеты и заставить обмениваться данными уже напрямую - хз, а скорее всего и вовсе невозможно... ведь в таблице переадресации указан IP сервера и на IP клиента его сервер не перепишет..... Вообщем я поднял тему либо чтобы подтвердили мою правоту, либо подсказали извращенский способ о котором я еще невкурсе. |
| Автор: Comm 14.4.2009, 02:32 | ||||
Ну почему,я думаю что ICQ при передаче файлов так и работала,иначе зачем было выводить аллерт "Внимание отправитель может узнать ваш ай пи адрес" или что то такое =)) отсюда вопрос,если отправляемый файл проходил бы через сервер ICQ зачем тогда показывать ай пи принимающей стороны. Отсюда и выводы что ICQ проходит как посредник соединитель..ИМХО
Во всяком случае можно попробовать к примеру с помощью WinPCAP(если конечно клиент и сервер является вашим продуктом) |
| Автор: XapoH 24.5.2009, 10:28 |
| Для таких ситуаций существуют решения по-типу http://ru.wikipedia.org/wiki/STUN |
| Автор: Comm 24.5.2009, 15:47 |
| Спасибо,полезная ссылка) |
| Автор: jonie 25.5.2009, 21:49 |
| stun часто вероломно режется 8( почитайте как работает скайп, вот его "хрен остановишь" ... да простят меня за оффтопный сайт: http://www.xakep.ru/post/38543/default.asp вот примерное описание "как". |
| Автор: chekist 26.5.2009, 22:49 |
| Можно воспользоваться программой hamachi. Прога устанавливает виртуаьльный драйвер сетевой карточки, и создает виртуальную локальную сеть. Т.е. два компа будут соединяться так же, как и по локалке (с локальными IP, выделенными hamachi), хотя физически трафик пойдет по инету. |