Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подключение к компу без постоянного IP, Вычисление динамического IP-адреса 
:(
    Опции темы
Romero
Дата 23.7.2005, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 17.6.2005

Репутация: нет
Всего: 1



Проблема:
Есть комп с VPN соединением с инетом через некий сервер.
Доступа к серверу нет (тобиш ничего на нем низя настроить или установить).
Комп, соединяясь через этот сервер с инетом получает динамический IP.
Нужно зная этот адрес, подключиться к компу извне (например, зайти на ftp, установленный на компе).

Реально ли это впринципе? Если да, то каким образом можно получать каждый раз этот адрес на Delphi?
PM   Вверх
Poseidon
Дата 23.7.2005, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 4
Всего: 133



Помимо IP у компа еще есть и сетевое имя. Вот по этому имени и можно узнать IP
Код
function HostToIP(name: string; var Ip: string): Boolean;
var
  wsdata : TWSAData;
  hostName : array [0..255] of char;
  hostEnt : PHostEnt;
  addr : PChar;
begin
  WSAStartup ($0101, wsdata);
  try
    gethostname (hostName, sizeof (hostName));
    StrPCopy(hostName, name);
    hostEnt := gethostbyname (hostName);
    if Assigned (hostEnt) then
      if Assigned (hostEnt^.h_addr_list) then begin
        addr := hostEnt^.h_addr_list^;
        if Assigned (addr) then begin
          IP := Format ('%d.%d.%d.%d', [byte (addr [0]),
          byte (addr [1]), byte (addr [2]), byte (addr [3])]);
          Result := True;
        end
        else
          Result := False;
      end
      else
        Result := False
    else begin
      Result := False;
    end;
  finally
    WSACleanup;
  end
end;


Параметры:
name - сетевое имя компа
Ip - необходимый нам IP


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Romero
Дата 24.7.2005, 06:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 17.6.2005

Репутация: нет
Всего: 1



Замечательно, но:
1) "Access violation at address 00000000. Read of address 00000000." выдает при попытке выполнения функции (на строке WSAStartup ($0101, wsdata);).
2) В качестве name должно быть сетевое имя моего компа, правильно я понимаю?
3) Если таким образом вычислить ИП, сойдет ли он для моих целей. Реально ли вообще организовать описанное в 1 посте?

Это сообщение отредактировал(а) Romero - 24.7.2005, 06:14
PM   Вверх
RA
Дата 24.7.2005, 06:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 10
Всего: 115



1) "Access violation at address 00000000. Read of address 00000000." выдает при попытке выполнения функции (на строке WSAStartup ($0101, wsdata);).

А виндоФс XP ?
PS: там кстати в uses winSock нужен.

2) В качестве name должно быть сетевое имя моего компа, правильно я понимаю?
Нетвоего, а того на который зайти хочешь.

3) Если таким образом вычислить ИП, сойдет ли он для моих целей. Реально ли вообще организовать описанное в 1 посте?

Для твоих целей это не сойдёт, разве что ты с ним в одной сети, но тогда эта лажа вовсе не нужна ибо \\UsersPCname\FolderName ...
Добавлено @ 06:34
Так что не понятно что хотел сказать посейдо, разве что он надеялся на наличие DNS'a smile

Это сообщение отредактировал(а) RAdmin - 24.7.2005, 06:33
PM   Вверх
Romero
Дата 24.7.2005, 07:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 17.6.2005

Репутация: нет
Всего: 1



1) Понятно, что нужен! IdWinsock подключил. Если б не прописал в uses, как, думаешь, я аксесс виолэйшн получил?

2) Я это и имел ввиду (просто на свой комп хочу с чужого зайти smile)

3) Что можешь посоветовать для моих целей?
PM   Вверх
RA
Дата 24.7.2005, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 10
Всего: 115



Цитата(Romero @ 24.7.2005, 07:19)
1) Понятно, что нужен! IdWinsock подключил. Если б не прописал в uses, как, думаешь, я аксесс виолэйшн получил?


Дык не IdWinsock а просто WinSock (Дефолтовый делфийский, а не индийский (Indy) ) smile


Цитата(Romero @ 24.7.2005, 07:19)
3) Что можешь посоветовать для моих целей?


Получить статический IP (Это должно стоить около 5$ в месяц).
А иначе никак даже если ты будешь знать IP своего компа, соединение не установишь.


Есть ещё сложный вариант, но он тебе не понравится, проще 5$ заплатить. smile





PM   Вверх
Romero
Дата 24.7.2005, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 17.6.2005

Репутация: нет
Всего: 1



А как тогда работают такие сервисы, как Direct Update или DNS4Me?
Эти проги сидят в памяти и при каждом коннекте/реконнекте узнают динамический ИП, отсылают на свой сервак, а тот предоставляет DNS-имя.

Как реализовать такую же вещь но без получения DNS имени? Ведь серваки этих программ, получается, переадресуют пакеты, отправленные на это DNS-имя, на мой комп. ИМХО, как-то можно связаться с моим компом извне, даже если я не имею статический IP за $5 (тем более, не выйдет его у меня купить ввиду некоторых особенностей моего инет-подключения)!
PM   Вверх
Akella
Дата 25.7.2005, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 4
Всего: 329



нужна библиотечка WinSock2!
PM MAIL   Вверх
Romikgy
Дата 25.7.2005, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Цитата(Romero @ 24.7.2005, 17:39)
А как тогда работают такие сервисы, как Direct Update или DNS4Me?
Эти проги сидят в памяти и при каждом коннекте/реконнекте узнают динамический ИП, отсылают на свой сервак, а тот предоставляет DNS-имя.

Как реализовать такую же вещь но без получения DNS имени? Ведь серваки этих программ, получается, переадресуют пакеты, отправленные на это DNS-имя, на мой комп. ИМХО, как-то можно связаться с моим компом извне, даже если я не имею статический IP за $5 (тем более, не выйдет его у меня купить ввиду некоторых особенностей моего инет-подключения)!

Просто идея smile
В нете необходим сайт , на нем два скрипта, один принимает динамический айпи, второй отдает.
В твоей локалке маленькая прога , которая переодически обновляет на сайте динамический айпи, дома другая прожка, которая читает айпи с сайта smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Guest
Дата 26.7.2005, 16:31 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Вот! А теперь как мне узнать этот динамический ИП, чтобы передать на сайт? Код Посейдона позволяет именно его вычислить?
  Вверх
Romikgy
Дата 28.7.2005, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Да только надо знать имя компа в сети /символьное/


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Romero
Дата 28.7.2005, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 17.6.2005

Репутация: нет
Всего: 1



Дык, я с одного компа отправляю на сайт ИП (не проблема узнать имя компа, где прога запускается). А с другого компа читаю этот ИП с сайта. На сайте не нужно будет никаких скриптов!
PM   Вверх
Romikgy
Дата 29.7.2005, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Romero не твое сообщение разве ?

Цитата(Guest @ 26.7.2005, 16:31)
Вот! А теперь как мне узнать этот динамический ИП, чтобы передать на сайт? Код Посейдона позволяет именно его вычислить?



Цитата(Romero @ 28.7.2005, 17:42)
На сайте не нужно будет никаких скриптов!

Ну эт дело уже твое smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0568 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.