![]() |
Модераторы: Snowy, Poseidon, MetalFan |
![]() ![]() ![]() |
|
boobie |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 16.9.2011 Репутация: нет Всего: нет |
Здравствуйте! Как лучше всего узнать свой внешний IP-адрес (IPv4 или IPv6)? А в случае его отсутствия - IP адрес в локальной сети.
Сначала думал вытащить его из результата выполнениния команды ipconfig, но это не всегда работает, т.к. может быть несколько соединений или сетевых карт. С помощью чего и куда подключаться для получения внешнего ip (v4 и v6)? |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 2 Всего: 459 |
Какой бы ни был способ, адаптеров может быть много и IP адресов тоже может быть много. Есть способ получения текущего активного, на котором висит инет. Если это то что нужно, то делается через WinAPI по имени компа. У меня где-то был примерчик.
Добавлено через 7 минут и 35 секунд gethostname позволяет узнать сетевое имя текущего компа. gethostbyname позволяет узнать IP адрес по имени хоста. Но IP будет последнего адаптера который установил соединение. Это вполне может быть wifi или еще что. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
boobie |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 16.9.2011 Репутация: нет Всего: нет |
Т.е. как выполнять соединение? Если это ip wi-fi, то законнектиться не получится?
Alexeis Эмм... IPv4-адрес эти функции возвращают, а что делать с IPv6? Яндекс выдает мне оба адреса на запрос "my ip". IdIPWatch1.LocalIP выдает мне IPv4-адрес локальной сети. Фигня какая-то... Это сообщение отредактировал(а) boobie - 8.8.2013, 13:11 |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 2 Всего: 459 |
Ну как, кабель воткнул, адаптер считает, что есть соединение. Wifi подключился к сети, считает что есть соединение. Не в смысле сокетов соединение.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
boobie |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 16.9.2011 Репутация: нет Всего: нет |
И у каждого свой ИП-адрес? И как тогда пользоваться, например, Инди-компонентами? Какой клиенту ИП передавать? Это сообщение отредактировал(а) boobie - 8.8.2013, 13:14 |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 2 Всего: 459 |
Если адаптеры не включены в мост, то у них разные IP . Т.е. почти всегда разные. Как работать зависит от ситуации. Если нужно с инетом работать, то через gethostbyname будет нужный IPшник, тот через который получают инет. А так по разному может быть. Как иначе выбрать нужную сеть если не по IPшнику адаптера?
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
boobie |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 16.9.2011 Репутация: нет Всего: нет |
А если пользователь с роутером "создает" сервер, дает мне свой АйПи, полученный с помощью gethostbyname, то я не смогу к нему подключится по данному АйПи... Как подключаться в таком случае?
Это сообщение отредактировал(а) boobie - 8.8.2013, 15:17 |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 2 Всего: 459 |
За роутером траблы. Чтобы работал сервер за роутером нужно делать перенаправление портов на роутере. Насколько я знаю, самое правильное решение для конекта таких пользователей это установка соединения через промежуточный сервер. Например установить VPN типа Hamachi .
Вообще, в настоящее время как-то научились обходить роутеры (я имею ввиду pnp сети типа торрентов) . Насколько я знаю, используется технология UPnP автоматического перенаправления портов. Можно почитать например тут http://www.codeproject.com/Articles/27346/...on-using-the-UP . -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Illusion Dolphin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 2 Всего: 63 |
Чтобы узнать "внейший" айпи единственный версый спобоб это:
1) Сделать простенький сайт который отвечает на GET строкой с IP юзера 2) Разместить его в интернете 3) Из программы запросить сайт 4) Профит Всё остальное в какой-либо ситуации будет не работать. Добавлено через 1 минуту и 52 секунды Но работать будет только если есть соединение с "внешним миром", само сабой разумеется, т.к. иначе у вас может и не быть "внешнего" адреса. -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 2 Всего: 459 |
Illusion Dolphin, я так понимаю внешний IP не самоцель, он нужен для того чтобы запустить сервер на машине, вот только если машина за рутером, то внешний IP никак не поможет.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Illusion Dolphin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 2 Всего: 63 |
Чтобы запустить сервер он как раз таки не нужен ![]() А дальше вопрос соединения 2х машин. Тут есть много вариантов. Обычно нормальный сервер доступен "извне", что означает, что если внешний пользователь запросит какой-то арес и порт то в конечном итоге запрос дойдёт до сервера. На этом пути могут стоять маршрутизаторы, NAT и прочие сетевые устройства, даже ADSL. Но всё это проблемы серверной части, клиент просто соединяется и всё. В вашем случае не понятно, что за сервер, какая конфигурация сети и кто такой пользователь и что он имеет. Если уточните - будет можно давать советы, а так как-то слишком пусто. -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
boobie |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 16.9.2011 Репутация: нет Всего: нет |
Ну я разбираюсь с Инди-библиотекой... Простенький чат, например. Предположим, у меня есть Айпи моего друга, я пытаюсь отправить ему сообщение. Но у него стоит роутер. Дойдет ли до него мое сообщение?
Вот, максимально упрощенный код: 2 Memo, 1 Button, при нажатии на кнопку отправляется содержимое Memo1. Коннект происходит при создании формы. IP вводится в idTCPClient1.Host перед компиляцией:
Тут как бы неважна конкретная задача. Я пихаю IP в idTCPClient1.Host и Инди делает все за меня. Вопрос в том, какой Ip туда пихать. И как в таком случае настраивать серверную часть, чтобы не смотря на
клиент подключился? Это сообщение отредактировал(а) boobie - 9.8.2013, 08:40 |
||||
|
|||||
Illusion Dolphin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 2 Всего: 63 |
Роутер - это слишком обще ![]() -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
boobie |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 16.9.2011 Репутация: нет Всего: нет |
Эмм... Несколько усложненная версия чата (с вводом ИП) с таким же принципом работает криво.
Друг сообщает мне свой IP (результат запроса "my ip" в яндексе), я - свой. У него есть роутер, он зашел в инет с ноута (по ВиФи). У меня роутера нет, мой Ip - реальный (т.е. меня по этому ip можно просечь, хакнуть и т.д.) адрес машины в сети. Ко мне он коннектится нормально, сообщения от него доходят, а я не могу законнектится к нему. Насколько я понимаю, он сообщает мне адрес своего роутера, т.е. его выдает поисковик. А роутер затем уже перенаправляет на подключенное устройство. Что делать в этом случае? ---------------------------------------------------- Порты проверять? idtcpserver.defaultport=7000, сервер прослушивает порт 7000, idtcpclient.port = 7000, клиент отправляет строки на порт 7000. Если у него 7000 порт закрыт, то смог бы он мне отправить строку? ----------------------------------------------------
И как это реализовывать? ---------------------------------------------------- ipconfig выдает у него только адрес в локальной сети. Тему надо назвать "как настроить idtcpserver, если у вас стоит роутер\прокси\и пр." Это сообщение отредактировал(а) boobie - 9.8.2013, 13:48 |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 2 Всего: 459 |
В роутерах перенаправление часто задается как Virtual Server. Указывается локальный IP компа и порт (диапазон портов), в этом случае роутер будет перенаправлять входящий запрос своего IP на входящий запрос локального IP с указанным портом. Т.е. сервер за рутерем биндит свой локальный IP к порту, а клиент,т.е. ты контектится по внешнему IP. Рутер же будет транслировать пакет, так как если бы он шел с локальным IP, в результате сервер сможет опознать входящий запрос и создаст по нему сокет. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Сети" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |