AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ping Bitte um Erläuterung

Ein Thema von LAWn-M0W3R · begonnen am 18. Nov 2006 · letzter Beitrag vom 18. Nov 2006
Thema geschlossen
LAWn-M0W3R

Registriert seit: 31. Jul 2006
Ort: Potsdam / Berlin
38 Beiträge
 
#1

Ping Bitte um Erläuterung

  Alt 18. Nov 2006, 20:00
Hallo,

ich habe eine dringende Bitte: Ich muss am Montag zwei Stunden lang meinen Mitschülern im Informatikunterricht objektorientiertes Programmieren erklären. Die erste Stunde mache ich Definitionen, Diagramme und wichtige Methoden und die zweite Stunde möchte ich eben mit ihnen zusammen ein Programm erarbeiten, dass einen Ping über die icmp.dll durchführt. Ich habe bereits einen Button selber gemacht (wegen Klassen und so). Die Ping-Prozedur habe ich mal im Web gefunden, sie funktioniert auch super, aber ich weiß nicht wie (Das muss ich aber genau wissen, um sie vorzustellen!).

Ich wäre euch total dankbar, wenn sich bis morgen Abend einer findet, der sich die Mühe machen würde den folgenden Quelltext zu kommentieren!
Delphi-Quellcode:
unit Unit2;

interface
uses
  Windows, SysUtils, Classes;

type
  TSunB = packed record
    s_b1, s_b2, s_b3, s_b4: byte;
  end;

  TSunW = packed record
    s_w1, s_w2: word;
  end;

  PIPAddr = ^TIPAddr;
  TIPAddr = record
    case integer of
      0: (S_un_b: TSunB);
      1: (S_un_w: TSunW);
      2: (S_addr: longword);
  end;

 IPAddr = TIPAddr;

function IcmpCreateFile : THandle; stdcall; external 'icmp.dll';
function IcmpCloseHandle (icmpHandle : THandle) : boolean;
            stdcall; external 'icmp.dll'
function IcmpSendEcho
   (IcmpHandle : THandle; DestinationAddress : IPAddr;
    RequestData : Pointer; RequestSize : Smallint;
    RequestOptions : pointer;
    ReplyBuffer : Pointer;
    ReplySize : DWORD;
    Timeout : DWORD) : DWORD; stdcall; external 'icmp.dll';


function Ping(InetAddress : string) : boolean;

implementation

uses
  WinSock;


procedure TranslateStringToTInAddr(AIP: string; var AInAddr);
var
  phe: PHostEnt;
  pac: PChar;
  GInitData: TWSAData;
begin
  WSAStartup($101, GInitData);
  try
    phe := GetHostByName(PChar(AIP));
    if Assigned(phe) then
    begin
      pac := phe^.h_addr_list^;
      if Assigned(pac) then
      begin
        with TIPAddr(AInAddr).S_un_b do begin
          s_b1 := Byte(pac[0]);
          s_b2 := Byte(pac[1]);
          s_b3 := Byte(pac[2]);
          s_b4 := Byte(pac[3]);
        end;
      end
      else
      begin
        raise Exception.Create('Error getting IP from HostName');
      end;
    end
    else
    begin
      raise Exception.Create('Error getting HostName');
    end;
  except
    FillChar(AInAddr, SizeOf(AInAddr), #0);
  end;
  WSACleanup;
end;

function Ping(InetAddress : string) : boolean;
var
 Handle : THandle;
 InAddr : IPAddr;
 DW : DWORD;
 rep : array[1..128] of byte;
begin
  result := false;
  Handle := IcmpCreateFile;
  if Handle = INVALID_HANDLE_VALUE then
   Exit;
  TranslateStringToTInAddr(InetAddress, InAddr);
  DW := IcmpSendEcho(Handle, InAddr, nil, 0, nil, @rep, 128, 0);
  Result := (DW <> 0);
  IcmpCloseHandle(Handle);
end;

end.
Ich habe mich leider noch nie mit Records beschäftigt (mache ich aber sofort) und weiß auch nicht, was 'stdcall' heißt.
Vielen Dank schon mal im Vorraus für die Hilfe!!!

Viele Grüße vom LAWn-M0W3R
 
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#2

[team]

  Alt 18. Nov 2006, 20:51
Wir sind hier kein "Mach mir die Hausaufgaben Forum". Du sollst Montag Deine eigenen Kenntnisse vortragen und nicht die der DP-User.
* * * C L O S E D * * *
 
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Ping Bitte um Erläuterung

  Alt 18. Nov 2006, 20:58
Obwohl schon geschlossen noch ein Hinweis meiner Seits. Objektorientierung an Hand einer API Funktion aus einer DLL zu demonstrieren ist ein sehr schlechtes Beispiel. Guck dir mal mein Tutorila zum Thema "Klassen in Delpohi" an: http://delphitutorials.michael-puff.de

Oder aber mach es wie unser BS Lehrer und nimm VB Script. Das ist auch sehr gut dazu geeignet, weil das ganze Overhead einer Programmiersprache wie Klassen-Deklarationen, Variablen-Deklarationen usw. fehlt. Siehe dazu auch meine Beispiele aus unserem Unterricht: http://www.michael-puff.de/dirindex....%20-%20Johlen/ -> VBScripte. Im Ordner Sonstiges liegt noch ein umfangreiches Beispiel für die Objetorientierung mit Delphi. Dies entstand nach einem Klassendiagramm, welches wir im Unterricht mal besprochen haben und welches wir, auf freiwilliger Basis und soweit wir konnten, mal in einer Programmiersprache umsetzen sollten, welche wir schon können.
Michael
Ein Teil meines Codes würde euch verunsichern.
 
Thema geschlossen


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz