Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];

Вниз

Как програмно узнать есть ли коннект с интернетом.?   Найти похожие ветки 

 
Officeman   (2006-02-04 13:17) [0]

Написал программу. Теперь надо чтоб при запуске программа открывала
URL адрес. но с учётом проверки соединения с интернет. т.е. если соединения есть или такой адрес найден(есть ответ), тогда открываем окно броузера. иначе не открываем.

нашёл похожую тему
http://delphimaster.net/view/6-1138956468/
но практически ничего не понял.

Объясните как сделать проще. Пожалуйста.


 
Anatoly Podgoretsky ©   (2006-02-04 13:21) [1]

Что такое соединение с Интернет и зачем оно тебе нужно?
Просто запрашивай ресурс и обрабатывай ошибку.


 
Officeman   (2006-02-04 13:31) [2]

после запуска программы, открывается окно броузера в котором загружается
html(или другая) страничка  с  баннерами. в слущае если такой адрес найден.

>Просто запрашивай ресурс и обрабатывай ошибку.
Это можно сделать если будет использоватся компонент TWebBrowser?
или это можно сделать без использованяи компонента?

я открываю ссылки так обычно.
ShellExecute(0, "", "http://......", "", "", SW_SHOW);
каким образом можно сделать обработку проверки. если адрес не найден?

программой будет пользоватся примерно 100 разных человек ежедневно.
Хочу чтоб прога пользу приносила.


 
DrPass ©   (2006-02-04 13:35) [3]

Проверить связь можно обычным пингом, например, с помощью компоненты IdICMP


 
Officeman   (2006-02-04 14:03) [4]

в  IdICMPClient  надо задавать HOST  в виде IP адреса.
как узнать IP адрес =)) например адрес такой   http://stalkerz.info


 
Officeman   (2006-02-04 14:11) [5]

=)) ступил. уже разобрался с IP =))


 
Officeman   (2006-02-04 14:17) [6]

нашёл пример работы компоненты    IdICMPClient

вот он.:  помылаешь адрес хоста. и пингуешь. получаешь в Memo результаты каждый интервал 1000.



unit Main;

interface

uses
 {$IFDEF Linux}
 QGraphics, QControls, QForms, QDialogs, QStdCtrls, QExtCtrls,
 {$ELSE}
 windows, messages, graphics, controls, forms, dialogs, stdctrls, extctrls,
 {$ENDIF}
 SysUtils, Classes, IdIcmpClient, IdBaseComponent, IdComponent, IdRawBase, IdRawClient;

type
 TfrmPing = class(TForm)
 lstReplies: TListBox;
 ICMP: TIdIcmpClient;
 Panel1: TPanel;
 btnPing: TButton;
 edtHost: TEdit;
 procedure btnPingClick(Sender: TObject);
 procedure ICMPReply(ASender: TComponent; const ReplyStatus: TReplyStatus);
 private
 public
 end;

var
 frmPing: TfrmPing;

implementation
{$IFDEF MSWINDOWS}{$R *.dfm}{$ELSE}{$R *.xfm}{$ENDIF}

procedure TfrmPing.btnPingClick(Sender: TObject);
var
 i: integer;
begin
 ICMP.OnReply := ICMPReply;
 ICMP.ReceiveTimeout := 1000;
 btnPing.Enabled := False; try
 ICMP.Host := edtHost.Text;
 for i := 1 to 4 do begin
 ICMP.Ping;
 Application.ProcessMessages;
 //Sleep(1000);
 end;
 finally btnPing.Enabled := True; end;
end;

procedure TfrmPing.ICMPReply(ASender: TComponent; const ReplyStatus: TReplyStatus);
var
 sTime: string;
begin
 // TODO: check for error on ping reply (ReplyStatus.MsgType?)
 if (ReplyStatus.MsRoundTripTime = 0) then
 sTime := "<1"
 else
 sTime := "=";

 lstReplies.Items.Add(Format("%d bytes from %s: icmp_seq=%d ttl=%d time%s%d ms",
 [ReplyStatus.BytesReceived,
 ReplyStatus.FromIpAddress,
 ReplyStatus.SequenceId,
 ReplyStatus.TimeToLive,
 sTime,
 ReplyStatus.MsRoundTripTime]));
end;



=) немогу сообразить.
когда при работе программы ХОСТИНГ не обнаруживается. программа выдаёт ошибку. надо сделать так чтобы ошибку невыдавало.


 
Gero ©   (2006-02-04 14:25) [7]

> я открываю ссылки так обычно.
> ShellExecute(0, "", "http://......", "", "", SW_SHOW);
> каким образом можно сделать обработку проверки. если адрес
> не найден?

В общем случае никаким.


 
Gero ©   (2006-02-04 14:26) [8]

> программа выдаёт ошибку. надо сделать так чтобы ошибку невыдавало.

try
except


 
Officeman   (2006-02-04 14:43) [9]

напиши кусок кода как ты себе это представляешь! там много событий немогу понять какие относятся к этой ошибке. ошибка типа

# Socet Error 11004


 
Gero ©   (2006-02-04 14:50) [10]

> там много событий немогу понять какие относятся к этой ошибке

ICMP.Ping;


 
Officeman   (2006-02-04 15:11) [11]

в коде примера не сказано как отловить ошибку когда не пингуется адрес
=((  если кто знает привидите пример пожалуйста.


 
Officeman   (2006-02-04 19:04) [12]

никто не знает или вопрос не ясен? подскажите кто знает. плиз плиз плиз...


 
HITMAN ©   (2006-02-04 20:11) [13]

function TForm1.IsConnectedToInternet: Boolean;
var
  dwConnectionTypes: DWORD;
begin
  dwConnectionTypes :=
    INTERNET_CONNECTION_MODEM +
    INTERNET_CONNECTION_LAN +
    INTERNET_CONNECTION_PROXY;
  Result := InternetGetConnectedState(@dwConnectionTypes, 0);
end;


буттон1.клик

  if IsConnectedToInternet then
   begin
    Timer1.Enabled:=false;
    StartMessageLoad();
   end;


 
Officeman   (2006-02-04 20:30) [14]

to HITMAN, большое - человеческое спасибо!!


 
HITMAN ©   (2006-02-04 21:58) [15]

implementation

uses WinInet;

{$R *.dfm}


помойму ещё надо вставить WinInet

или поищи нужное тут:
(это пример с моего проэкта, поэтому толком непомню)

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
 IdMessageClient, IdSMTP, StdCtrls, idMessage, ComCtrls, ExtCtrls, XPMan,
 Buttons, ImgList, Gauges, IdPOP3, SHELLAPI, Menus, ActiveX, MSHTML,
 OleCtrls, SHDocVw, FileCtrl;


 
Officeman   (2006-02-05 02:56) [16]

я сразу разобрался.  спасибо за помощь. модуль отлично работает. =)

p.s. я не чайник. просто немного рассеяный.

тут анекдот вспомнил:

Купил книгу "С++ для чайников", оказалось что надо ещё купить "С++ для идиотов."

=)))))))))))))



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.045 c
1-1137509449
Харько (настоящий)
2006-01-17 17:50
2006.02.19
Что делать с адресом?


2-1138750519
atmospheric
2006-02-01 02:35
2006.02.19
наследование класса


2-1138881288
GoshaT
2006-02-02 14:54
2006.02.19
Вставить картинку в TRichEdit


2-1138809656
maxim161
2006-02-01 19:00
2006.02.19
MonAPI


2-1138731187
Arazel
2006-01-31 21:13
2006.02.19
Error: Ambiguous colum name C_Cost (ADOTable.SQL)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский