AGB  ·  Datenschutz  ·  Impressum  







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

IP - Hardcore

Ein Thema von Meflin · begonnen am 18. Jan 2005 · letzter Beitrag vom 6. Dez 2006
 
Benutzerbild von The-X
The-X

Registriert seit: 30. Aug 2003
Ort: Woffelsbach / user.exe ;)
377 Beiträge
 
Delphi 7 Personal
 
#15

Re: IP - Hardcore

  Alt 18. Jan 2006, 12:39
Zitat von Luckie:
Guck dich mal auf dieser Seite etwas um: http://c-worker.ch/ Da hat es auch Demos, wie man ohne Komponenten einen Ping realisiert. Das C Demo wollte ich schon längst selber mal nach Delphi übersetzten.
Luckie, Bist du schon dazu gekommen das zu übersetzen?
ich versuche mich nämlich grade auch daran, allerdings basierend auf einer anderen Quelle (SysInternals - ShareEnum\Source\Ping.cpp)
und erhalte beim Empfangen einen Fehler "WSAGetLastError: Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer bestimmten Zeitspanne nicht ordnungsgemäß reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host nicht reagiert hat" dabei ist mein Router sehr wohl online sonst wär ich ja nicht hier... anbei mal den Stand der Dinge zum Pingen (Jedi-Übersetzungen von WinSock2 benötigt):
Delphi-Quellcode:
unit SockPing;

interface

uses Windows,SysUtils,JWAWinSock2;

const
  ICMP_ECHO=8;
  ICMP_ECHOREPLY=0;

type
  TIcmpHeader=Record
     i_type: Byte;                  // ICMP packet type
     i_code: Byte;                  // type subcode
     i_chksum: USHORT;               // packet checksum
     i_id: USHORT;                  // unique packet ID
     i_seq: USHORT;                  // packet sequence number
     timestamp: ULONG;               // timestamp
    data:array[0..31]of char;
  end;

function Ping(Const Server:String):boolean;

implementation

function Ping(Const Server:String):boolean;
var
  Sock:TSocket;
  Addr:TSockAddrIn;
  WD:WSAData;
  ICMPhdr:TIcmpHeader;
  datasize,fromlen,Timeout:Integer;
begin
  WSAStartup(MakeWord(2,2),WD);
  Sock:=WSASocket(AF_INET,SOCK_RAW,IPPROTO_ICMP,nil,0,WSA_FLAG_OVERLAPPED);
  Result:=not(Sock=Invalid_Socket);
  if not Result then exit;

  TimeOut:=100;
  Result:=not(setsockopt(sock,SOL_SOCKET,SO_RCVTIMEO,@Timeout,Sizeof(Timeout))=SOCKET_ERROR);
  if not Result then exit;

  TimeOut:=100;
  Result:=not(setsockopt(sock,SOL_SOCKET,SO_SNDTIMEO,@Timeout,Sizeof(Timeout))=SOCKET_ERROR);
  if not Result then exit;

  with Addr do begin
    sin_addr.S_addr:=inet_addr(Pchar(Server));
    sin_family:=AF_INET;
  end;
  with ICMPhdr do begin
    i_type:=ICMP_ECHO;
    i_code:=0;
    i_id:=Ushort(GetCurrentProcessId);
    i_chksum:=0;
    i_seq:=0;
    timestamp:=GetTickCount;
    FillChar(data[0],32,0);
  end;

  DataSize:=Sizeof(icmphdr);
  Result:=not(sendto(Sock,ICMPhdr,DataSize,0,@Addr,Sizeof(TSockAddrIn))=SOCKET_ERROR);
  if not Result then exit;

  Result:=not(recvfrom(Sock,ICMPhdr,DataSize,0,@Addr,fromlen)=SOCKET_ERROR);
  if not Result then begin
    Writeln('Error! RecvReason: '+SysErrorMessage(WSAGetLastError));
    exit;
  end;

  closesocket(Sock);
  WSACleanup;
end;

end.
WGET ftp://root@fbi.us.gov/secret/worldreign.exe <- damit werde ich die Weltherrschaft an mich reissen!
=> irc://irc.quakenet.eu.org:6667/delphi.de da werden Sie auch (manchmal) geholfen
  Mit Zitat antworten Zitat
 


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 14:58 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-2025 by Thomas Breitkreuz