|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Проверка соединения работает не корректно
есть код примерно так
Код:
http:TidHttp; .... procedure TForm1.Timer1Timer(Sender: TObject); var s1,s2,s3 :string; i, k :integer; begin Timer1.Enabled:=true; try page1:=http.get('http://127.0.0.1:8080'); if http.ResponseCode=200 then ...рабочий код.. except ... Label4.Caption :=IntToStr(http.ResponseCode); ... end; так вот, пока локальный сервер запущен условие срабатывает нормально потом сервер выключаю и он недоступен, условие не срабатывает когда снова включаю сервер, у меня это условие уже не работает, то есть рабочий код не исполняется, хотя сервер доступен. в чем загвоздка не ясно процедура таймера запускается от кнопки на форме |
#2
|
||||
|
||||
Timer1.Enabled:=False наверно все-таки)
if http.ResponseCode=200 then ---> if http.connected then Пробуй [ Ты не сможешь никому помочь до тех пор, пока не поможешь себе ] Delphi 7 user
ICQ: 570224849 / JID: x-rem@jabber.ru|no / Skype: ukc-rem / VK: ukc_rem.vk.com (ID: 27703738) |
#3
|
|||
|
|||
такой код вобще не работает у меня
Код:
procedure TForm1.Button1Click(Sender: TObject); begin try //Edit2.Text:=http://127.0.0.1:8080 idHTTP1.Get(Edit2.Text); if IdHTTP1.connected then Edit1.Text:='Ресурс доступен'; except Edit1.Text:='Произошла ошибка'; end; end; не выводит сообщения |
#4
|
||||
|
||||
Код:
Смотри следующее сообщение [ Ты не сможешь никому помочь до тех пор, пока не поможешь себе ] Delphi 7 user
ICQ: 570224849 / JID: x-rem@jabber.ru|no / Skype: ukc-rem / VK: ukc_rem.vk.com (ID: 27703738) Последний раз редактировалось X-rem, 14.08.2010 в 20:54. |
#5
|
||||
|
||||
Я понял что у тебя не так)
Код:
begin Timer1.Enabled:=False; try page1:=http.get('http://127.0.0.1:8080'); if http.ResponseCode=200 then begin ...рабочий код.. end else ShowMessage('Нету подключения'); except ... ShowMessage('Нету подключения [Error]'); Label4.Caption :=IntToStr(http.ResponseCode); ... end; [ Ты не сможешь никому помочь до тех пор, пока не поможешь себе ] Delphi 7 user
ICQ: 570224849 / JID: x-rem@jabber.ru|no / Skype: ukc-rem / VK: ukc_rem.vk.com (ID: 27703738) |
#6
|
|||
|
|||
действительно с другим адресом работает
а с локальным http://127.0.0.1:8080 почему-то не хочет может изза порта, или сервер выдает другие данные? там как бы не сервер стоит, а утилита с веб-интерфесом вот я ее и опрашиваю может можно проверять какнибудь порт, открыт или нет |
#7
|
|||
|
|||
когда я отключаю утилиту и вебинтерфейс отключается
то ResponseCode возвращает -1 с чего это вдруг вобще не ясно влияют ли настройки прокси в IE на indy? |
#8
|
||||
|
||||
>влияют ли настройки прокси в IE на indy?
Я не спец. но вроде влияют. >может изза порта, или сервер выдает другие данные? Должно работать без особых наворотов если там не SSL соединение. >проверить порты в Windows Пуск -> выполнить -> cmd и в окно что появилось написать: netstat -ao [enter] [ Ты не сможешь никому помочь до тех пор, пока не поможешь себе ] Delphi 7 user
ICQ: 570224849 / JID: x-rem@jabber.ru|no / Skype: ukc-rem / VK: ukc_rem.vk.com (ID: 27703738) Последний раз редактировалось X-rem, 14.08.2010 в 21:06. |
#9
|
|||
|
|||
вот такой код
Код:
procedure TForm1.Button1Click(Sender: TObject); begin try //Edit2.Text:=http://127.0.0.1:8080 idHTTP1.Get(Edit2.Text); if idHTTP1.ResponseCode=200 then begin ShowMessage('Connected'); end else ShowMessage(IntToStr(idHTTP1.ResponseCode)); except ShowMessage('Not Connected '+IntToStr(idHTTP1.ResponseCode)); end; end; работает странным образом если сервер доступен то вроде как пишет конектед как только отключаю, то пишет Not Connected, но ResponseCode пишет все равно 200, как будто бы он сохранился с момента коннекта. а после старта сервера уже не показывает что есть подключение. вот какойто глюк странный с этим кодом Последний раз редактировалось harbor, 14.08.2010 в 21:45. |
#10
|
|||
|
|||
я имею ввиду как програмно проверить порт открыт или нет
в tcpview я его вижу |
#11
|
|||
|
|||
мне кажется какой-то метод будто кеширует или прекращает обработку
потому что при попытке проверить соединение после отключения и включения сервера, оно очень быстро прописывает сообщение дисконекта, не так когда он действительно обращается к серверу. после перезапуска программы, она показывает Конектед мне кажется нужно както освобождать IdHTTP1 и заново его инициализировать Последний раз редактировалось harbor, 14.08.2010 в 21:56. |
#12
|
|||
|
|||
ну все, победил. такой код нормально обрабатывает
Код:
var Form1: TForm1; http:TidHttp; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin http:=TIdHTTP.Create(Self); try http.Get(Edit2.Text); if http.ResponseCode=200 then begin Edit1.Text:='Connected'; end else Edit3.Text:='иначе'+IntToStr(http.ResponseCode); except Edit3.Text:='Not Connected '+IntToStr(http.ResponseCode); end; http.Free; end; procedure TForm1.Button2Click(Sender: TObject); begin Edit1.Text:='--'; Edit3.Text:='--'; end; end. |
#13
|
||||
|
||||
http://slil.ru/29563430
Навалял функцию: Код:
function CheakPort(ip:String; port:Word; timeout:Word; debug:Boolean):Boolean; var cc:TIdTCPClient; // uses IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient; begin Result:=False; cc:=TIdTCPClient.Create; cc.Port:=port; cc.ConnectTimeout:=timeout; cc.Host:=ip; try cc.Connect; if cc.Connected then begin if debug then ShowMessage('Debug:Connected'); Result:=True; end else if debug then if not cc.Connected then ShowMessage('Debug:Not connected'); except if debug then ShowMessage('Some Shit Was Happend') end; cc.Disconnect; cc.Free; end; procedure TForm1.Button1Click(Sender: TObject); begin // если выставить True будут всплывающие сообщения, говорящии подключились или нет if CheakPort('127.0.0.1',5000,80,False) then begin Label1.Caption:='Работаем ^_^'; // ... рабочий код end else Label1.Caption:='Не работаем'; end; [ Ты не сможешь никому помочь до тех пор, пока не поможешь себе ] Delphi 7 user
ICQ: 570224849 / JID: x-rem@jabber.ru|no / Skype: ukc-rem / VK: ukc_rem.vk.com (ID: 27703738) |
#14
|
|||
|
|||
у меня не компилится этот проект, на Delphi 7
что-то с TIdTCPClient не так может у меня старая компонента какаято |
#15
|
||||
|
||||
установи IdHTTP1.ConnectTimeout:=10000;
|