| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Сети > Преодоление препятствий. Роутеры и серые IP |
| Автор: boobie 28.8.2013, 10:16 |
| Здравствуйте! С помощью каких компонентов Indy (и не только) можно решить проблему с подключением к компьютеру, который находится за, например, роутером (т.е. при написании клиент-серверной программы). Как, зная IP адреса машины (и локальный, и внешний), сделать это? Ведь браузеры и, например, Skype как-то работают на таких машинах. Дополнительный проброс портов ручками на стороне, настройка роутера и пр. - это не то, что надо. Т.е. пользователь качает "Скайп, контру, браузер" и у него все работает сразу, из коробки. Как сделать так же По сути, эта тема - продолжение этой: http://forum.vingrad.ru/forum/topic-370935.html С сетью стал разбираться совсем недавно, сильно не пинайте. Теперь нужно создавать свой VPN? В какую сторону идти? |
| Автор: Illusion Dolphin 28.8.2013, 11:49 | ||||||||
А что если взяться за https://www.google.com/search?q=upnp&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a#fp=bfd31e136490d2b7&q=UPnP+delphi&rls=org.mozilla:en-US%3Aofficial
Это очень хитрая программа, умеет UPuP, сама находит прокси, и говорят, что творит чудеса
UPuP думаю
А ему ничего не нужно, максимум прокси настроить
Зачем? |
| Автор: boobie 28.8.2013, 12:12 |
| А как подключится к серверу за роутером? Использую открытые порты (80 и 443, те же, что и у скайпа, в надежде, что пройдет...) и не могу законнектится. Он может подключится ко мне, я - нет. У меня белый IP, у него белый ip у роутера. ПК подрублен к роутеру, у ПК локальный адрес. Тот же скайп работает нормально. Да прочитал про UPnP, круто, но... Я догадываюсь, что проблема в непосредственной передаче данных от роутера к ПК. Я использую Idtcpserver\client указываю белые адреса. Т.е. мой чатик прекрасно работает в локальной сети или при использовании реальных IP адресов в интернете. |
| Автор: Illusion Dolphin 28.8.2013, 14:38 | ||||||
Ну тогда можно попробовать использовать ещё "пассивный режим", когда всё делается через одно соединение. Т.е. чтобы взаимосвязываться он делает соединение к серверу чтобы получать данные с сервера и отправлять данные на сервер и второго соединения получается что не надо Добавлено через 2 минуты и 58 секунд
Это используется чтобы настроить проброс если такое поддерживается
А такое даже не обязательно. Можно даще использовать внешний сервер ак посредник (метод ICQ). Skype вообще траффик перегоняет через клиентов, которых благо много и у некоторых белые айпи |
| Автор: boobie 29.8.2013, 06:48 | ||||
Классно, и как это реализовать? Есть какие то компоненты в Делфях... Или на чистом Апи писать? Ссылки и литратура ф-ф-ф-ф-студию очень нужны.
А если делать сеть из 10-30 машин, то это ведь понадобится. Про UPnP бегло посмотрел. Трудно учится по отрывкам из гугла. Справочник бы какой... Литературы по сетевому программированию в Делфи так мало, может на С# ее больше? |
| Автор: Antony41 30.10.2013, 21:59 |
| Советую почитать книгу "О чем не пишут в книгах по Delphi" там подробно рассказывается о написании сетевых приложений |
| Автор: Akella 4.11.2013, 15:13 |
| Программа-сервер должна быть открыта и слушать, например, порт 80. Если программа за NAT`ом, то нужно выполнить переадресацию портов. А клиент, зная внешний IP программы-сервера и порт, подключается. Т.е. одна из сторон должна глядеть наружу. На роутере, т.е. на маршрутизаторе, будь то модем или ПК, нужно выполнить переадресацию портов из вне в локальную сеть, на тот ПК, где работает серверная часть. Добавлено через 4 минуты и 11 секунд Если программа-клиент не знает внешнего IP, куда подключаться, то программа-сервер должна где-то указать свой внешний IP. Т.е. должен быть где-то третий сервер. Так сказать, связующий. С постоянным адресом. И клиент, и сервер к нему подключаются. Сервер оставляет там свой адрес, а клиент узнает адрес сервера. Можно сделать третий сервер без программы. Например, программа-сервер заходит по HTTP на какой-нибудь хост и в текстовом файле оставляет свой IP. Клиент тоже заходит туда и читает его. |
| Автор: boobie 13.11.2013, 05:59 | ||
Случайно заметил, что тема ожила.
Это должен делать хозяин машины "ручками", или это можно реализовать программно с помощью Дельфей? А если, например, провайдер предоставляет только серые IP-адреса, тогда между конечной машиной и белым адресом может оказаться не один NAT... Что тогда? UPnP представляется более простым способом... Достаточно иметь один сервер с реальным белым АйПи, все сообщения проходят через него. Но я с этим так и не разобрался. Хотя очень хочу, данная тема очень интересна и однозначно пригодится. |
| Автор: boobie 13.11.2013, 12:21 |
| Vas, как его реализовать? Примерчик какой-нибудь... А лучше мануал на русском=). Сколько книг читал - везде простейшие примеры применения Винсок и пара самых простых примеров на инди... И все! Вот мысль такая появилась, что если запилить книгу по Дельфям, такую, в которой РЕАЛЬНО будет собрано то, о чем не говорится в других книгах. ДРКБ - это хорошо, но, это как нарезка статеек и форумных цитат. Урывками. И там не все есть. И ничего не объясняется часто. Если все эксперты форума, которые неравнодушны к Дельфям объединятся и попробуют создать что-нибудь подобное. Без всяких описаний Хелловорлд и Баттон - об этом и так все сказано. А о сетевом программировании (инди и без инди), стандартных графических средствах, OPENGL.... не знаю... о многопотоке, там тоже много всяких хитростей. Мечты, мечты... |
| Автор: Vas 13.11.2013, 15:13 |
| boobie, нету примеров, только теорию знаю и все :( Вот в сети попалось, но не тестил http://www.whitebear.ch/upnp.htm и вот http://www.sql.ru/forum/635125/upnp |