![]() |
Internetseite anpingen
hi
ich versuche eine internetseite anzupingen, und zwar mithilfe der indys, genauer IdIcmpClient das versuche ich so:
Delphi-Quellcode:
procedure TForm1.Btn_GetClick(Sender: TObject);
//Ping einleiten var i:Integer; begin Btn_Get.Enabled := False; try Ping.Host := Edt_URL.Text; for i := 1 to 4 do begin Ping.Ping; Application.ProcessMessages; end; finally Btn_Get.Enabled := True; end; end;
Delphi-Quellcode:
dies ist bisher nur von
procedure TForm1.PingReply(ASender: TComponent; const AReplyStatus: TReplyStatus);
//Bei PingReply var sTime: string; begin if (Ping.ReplyStatus.MsRoundTripTime = 0) then sTime := '<1' else sTime := '='; ListBox1.Items.Add(Format('%d Byte von %s: icmp_seq=%d ttl=%d Zeit%s%d ms', [Ping.ReplyStatus.BytesReceived, Ping.ReplyStatus.FromIpAddress, Ping.ReplyStatus.SequenceId, Ping.ReplyStatus.TimeToLive, sTime, Ping.ReplyStatus.MsRoundTripTime])); end; ![]() was mache ich falsch? |
Re: Internetseite anpingen
Was übergibst du denn als Host, also Edt_URL.Text?
|
Re: Internetseite anpingen
also
![]() ![]() ![]() aber ![]() |
Re: Internetseite anpingen
Der grund ist, dass bei Pings nur eine IP und nicht ein Protokoll angepingt wird,
http beschreibt bei den webseiten jeweils das Protokoll |
Re: Internetseite anpingen
Nicht ganz korrekt. Pings können natürlich nur auf IP's gehen, da im Ping-Protokoll kein Host-Feld vorgegeben ist. Der Server wird dazu benötigt, um die IP aus seinem DNS-Eintrag auszulesen.
Der Ablauf würde wie folgt auschauen: 1) Connecte zu Nameserver 2) Löse delphipraxis.net auf (http:// muss / sollte man nicht schreiben, da DNS "nur auf HTTP geht", und www. sollte man auch weglassen, da es sich dabei nur um einen Host handelt) 3) Bekomme IP zurück 4) Pinge IP Versuch das ganze mal mit krueger.de |
Re: Internetseite anpingen
funzt jetzt alles.
kann es theoretisch wirklich schief gehen wenn da 'www.' vorsteht? |
Re: Internetseite anpingen
Kann es. Der Domain ist nur als z.B. delphipraxis.net gespeichert. Wenn du zur DeNIC gehst und nach
![]() Die neuen DNS-Server scheinen das http:// bzw. www. am Anfang anscheinden selbst wegzukürzen. Sicherheitshalber immer nur den Domain übergeben. |
Re: Internetseite anpingen
Wobei es eines zu beachten gibt. Die IP-Adresse von www.delphi-praxis.net kann eine ganz andere sein als ftp.delphi-praxis.net
durch das www bzw. ftp wird im DNS nämlich wieder auf einen Server abgefragt (können auch mehrere sein). |
Re: Internetseite anpingen
@sharky: hättest du nicht noch paar stunden warten können, wollte das selbe eben auch posten.
das weglassen von "www." könnte sich ähnlich auswirken wie das weglassen von "www.delphipraxis."!! Denn jeder punkt steht für eine subdomain welche zwar auf den gleichen server zeigen kann aber nicht muss. Es ist zwar in den meisten fällen so das ![]() ![]() Also auf KEINEN FALL das "www." weg lassen. Ein grund warum das Ping schief gehen kann ist das der Ping-Port gesperrt ist. Wenn es darum geht zu prüfen ob ein http-server vorhanden ist, also "http://irgendwas" am besten auf port 80 "pingen". Da auf port 80 natürlich nicht das normale ping-commando gesendet werden kann besteht das "pingen" dann eigentlich nur aus einem Connect-Versuch |
Re: Internetseite anpingen
ich denke es funzt jetzt
ich poste einfach mal meine lösung zur erklärung: das programm soll die in Edt_URL.Text angegebene Seite runterladen und den Quelltext in SynMemo anzeigen. ich habe einen Log eingebaut, wo alle aktionen reinkommen, sowie eine history, die "alte" adressen speichert. Log is ne procedure, History is ne TStringList und Edt_URL ne ComboBox (jaja, name wird bald geändert ;) ) eine procedure zum eigentlichen pingen
Delphi-Quellcode:
eine (ButtonClick) um die URL entsprechend der eingabe zu kürzen oder zu ergänzen
procedure TForm1.DoPing(Host:String);
//Pingen begin try //Pingen Log('PING '+Host); Ping.Host:=Host; Ping.Ping; except //bei Fehler Log('PING '+Host+' failed'); ShowMessage('Host wurde nicht gefunden'); SynMemo.Text:=' Seite wurde nicht gefunden'+#13+ ' Bitte überprüfen sie die Adresse'+#13+#13+ 'Sie dürfen folgende Adressmuster eingeben:'+#13+ ' - www.abc.xyz'+#13+ ' - abc.xyz'; end; end;
Delphi-Quellcode:
und eine die beim Pong die seite runterlädt
procedure TForm1.Btn_GetClick(Sender: TObject);
//URL Ergänzen und Ping einleiten begin //URL ergänzen bzw kürzen if copy(Edt_URL.Text,1,7)='http://' then DoPing(copy(Edt_URL.Text,8,Length(Edt_URL.Text)-7)) else if copy(Edt_URL.Text,1,4)='www.' then DoPing(Edt_URL.Text) else DoPing('www.'+Edt_URL.Text); History.Add(Ping.Host); //History Edt_URL.Clear; Edt_URL.Items.AddStrings(History); Edt_URL.Text:=Ping.Host; end;
Delphi-Quellcode:
procedure TForm1.PingReply(ASender: TComponent; const AReplyStatus: TReplyStatus);
//Bei PingReply Seite Laden var Temp:Integer; begin Log('PONG from '+Ping.Host); //Log if SynMemo.Text<>'' then //event Speichern Temp:=Application.MessageBox('Möchten sie Die Aktuelle Seite speichern?',Titel,MB_YESNOCANCEL); if Temp<>IDCANCEL then //nicht Abbruch begin if Temp = IDYES then Speichernunter1Click(Form1); //Speichern try Log('Starting Download '+Ping.Host); SynMemo.Clear; SynMemo.Text:=IdHTTP.Get('http://'+Ping.Host); //Runterladen Form1.Caption:=Titel + ' - ' + Ping.Host; //Titel Log('Download from '+Ping.Host+' ready'); except //Fehler ShowMessage('Fehler beim Download'); //Fehler Log('Download Error'); end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz