![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Нужна идея [D7, 95/98, 2000, XP, 2003]
Novice © (2007-05-23 11:53:00)Мне необходимо подключаться RAdmin'ом к нескольким компьютерам вне локалки. Проблема в том, что они не имеют стат. ip. Соответственно, перед подключением надо этот адрес узнать, причем без участия пользователей этих машин. Со своим микроопытом в программировании я не смог придумать ничего лучше использования сокета: у них клиент, который по таймеру пытается соединиться с сервером, у меня - сервер, который слушает порт и при подключении определяет ip клиента. Вроде бы это работает, но возникла проблема на клиентах: если сервер не отвечает (нет связи, сервер не запущен и т.д.), то сокет ломится по порту, на единицу больше предыдущего, т.е., сначала 7000, потом 7001, 7002 и т.д. И в какой-то момент клиентский компьютер вообще не может выйти в интернет. Наверняка есть более простой и надежный способ получения ip, но мне он в голову не идет.
SlymRO (2007-05-23 14:50:00) [1]DDNS для этого придумали
Сергей М. (2007-05-23 14:22:00) [2]
> Novice (23.05.07 14:20) [18]
Да не пробовать надо, а углубиться в исходники)
Novice (2007-05-23 14:20:00) [3]Пошел пробовать...
Сергей М. (2007-05-23 13:57:00) [4]
> Novice (23.05.07 13:47) [16]
А должно было быть так:
procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
... что угодно ..
//если событие возникло в ходе попытки коннекта, то
Socket.Close; // эта строчка обязательна !
... что угодно ..
end;
Novice (2007-05-23 13:47:00) [5]
procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
ErrorCode := 0;
end;
Файер - скорее нет, т.к. один из клиентов - Вин98, а сторонних программ этого типа там нет.
Novice (2007-05-23 13:43:00) [6]&
1. Невозможно открыть страницу
2. Невозможно соединиться с сервером
3. Превышен интервал ожидания для запроса
umbra (2007-05-23 13:41:00) [7]
> клиентский компьютер вообще не может выйти в интернет
да это, наверное, файервол впадает в панику и блокирует все подключения
Сергей М. (2007-05-23 13:41:00) [8]
> Novice (23.05.07 13:40) [12]
Ну тады не обожгись - ошибка у тебя в обработчике OnError.
Novice (2007-05-23 13:40:00) [9]Горячо
Сергей М. (2007-05-23 13:37:00) [10]
> Достаточно-ли подробно я раскрыл фразу "клиентский компьютер
> вообще не может выйти в интернет"?
Увы, интрига закручена еще хлеще)
> 1. Невозможно открыть какую-либо страницу в эксплорере
От детальных объяснений эксплорер, конечно же, отказывается)
> 2. Не работает pop, smtp
Они (протоколы !!!), видимо, тоже научились говорить фразу "не работаю")
> 3. Не работает пинг
Боюсь даже предположить - это приложение вообще молча уходит в Нирвану)
Ну что ж, попробую подключить телепатор - твой клиент "тычется" в порты средствами TClientSocket в режиме ctNonBlocking.
Тепло ?)
Novice (2007-05-23 13:30:00) [11]
> Что, прямо так и говорит, мол, "не могу выйти в интернет"
> ?
Ну, если бы умел говорить, то ,вероятно, так и сказал бы.
1. Невозможно открыть какую-либо страницу в эксплорере;
2. Не работает pop, smtp
3. Не работает пинг.
Достаточно-ли подробно я раскрыл фразу "клиентский компьютер вообще не может выйти в интернет"?
Сергей М. (2007-05-23 13:16:00) [12]
> клиентский компьютер вообще не может выйти в интернет
Что, прямо так и говорит, мол, "не могу выйти в интернет" ?
Novice (2007-05-23 13:13:00) [13]
> На то и существует отладчик, чтобы искать и исправлять ошибки.
Как мне может помочь отладчик, если клиенты в других городах? На своей машине/локалке такой эффект повторить не удается.
А вот в сторону VPN надо посмотреть (у меня статика).
Сергей М. (2007-05-23 12:28:00) [14]
> Если есть ошибка, то я не знаю, в чем она заключается
На то и существует отладчик, чтобы искать и исправлять ошибки.
Сергей М. (2007-05-23 12:27:00) [15]
> Novice (23.05.07 11:53)
Но самая лучшая, imho, идея - все заинтересованные хосты должны быть клиентами VPN.
Твой хост, если у тебя статический глоб.адрес, вполне может выступить в роли VPN-сервера.
clickmaker (2007-05-23 12:25:00) [16]
> PS все открыто
а вот это зря :)
Novice (2007-05-23 12:25:00) [17]Если есть ошибка, то я не знаю, в чем она заключается. А по имени через интернет не подключишься, DNS'а нет. Сейчас сбегаю по ссылке, почитаю.
Reindeer Moss Eater (2007-05-23 12:22:00) [18]gethostbyname() не подойдет?
У меня имя компа "xxx". Отрезолвь попробуй адрес.
PS все открыто
:)
clickmaker (2007-05-23 12:14:00) [19]gethostbyname() не подойдет?
И, кстати, РАдмин разве не может по имени подключиться?
Сергей М. (2007-05-23 12:12:00) [20]
> в какой-то момент клиентский компьютер вообще не может выйти
> в интернет
Значит ошибка в программе.
> Наверняка есть более простой и надежный способ получения
> ip
см. dynamic DNS
http://www.google.ru/search?q=dynamic+DNS&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox-a