Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TCP/IP Packets: Sender IP (https://www.delphipraxis.net/43532-tcp-ip-packets-sender-ip.html)

moritz 5. Apr 2005 15:09


TCP/IP Packets: Sender IP
 
Hi Leute,

gibt es die Möglichkeit, ein IP-Paket selber aufzubauen und zu versenden, und die Antwort davon auszuwerten?

Gruß, Moritz

Phistev 5. Apr 2005 16:54

Re: TCP/IP Packets: Sender IP
 
Darf ich mal fragen, wieso du IP-Pakete senden und empfangen möchtest? Unter diesem Protokoll ist nur noch die Netzwerkkarte => hardwarenahes Programmieren (TCP/IP basiert auf einem Schicht-Modell). Normalerweise sollten Sockets ausreichen, es sei denn, du willst ein Diagnoseprogramm schreiben

moritz 5. Apr 2005 16:58

Re: TCP/IP Packets: Sender IP
 
Aus Interesse, wie es funktioniert.

Mephistopheles 5. Apr 2005 17:06

Re: TCP/IP Packets: Sender IP
 
http://winpcap.polito.it/

moritz 5. Apr 2005 17:11

Re: TCP/IP Packets: Sender IP
 
Danke, werd es mir anschauen!

Aenogym 5. Apr 2005 17:14

Re: TCP/IP Packets: Sender IP
 
Zitat:

Zitat von Mephistopheles
http://winpcap.polito.it/

wird auch von neXBC genutzt. funktioniert wohl ziemlich gut^^
[ot]da fällt mir ein,d ass ich mal wieder halo2 online zoggen muss :mrgreen:[/ot]

aenogym

moritz 5. Apr 2005 19:51

Re: TCP/IP Packets: Sender IP
 
Ich hab mich jetzt etwas durch die MSDN gekämpft, und folgendes ist dabei rausgekommen:
Delphi-Quellcode:
var
  lwsaData: WSADATA;
  lsocket: TSOCKET;
  clientService: sockaddr_in;
  bytesSent: Integer;
  bytesRecv: Integer;
  sendbuf: Array[0..31] of Char;
  recvbuf: Array[0..31] of Char;
begin
  if WSAStartup(MAKEWORD(2,2), lwsaData) <> NO_ERROR then
    Exit;

  lsocket := socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

  if lsocket = INVALID_SOCKET then
    Exit;

  clientService.sin_family := AF_INET;
  clientService.sin_addr.s_addr := inet_addr('128.30.52.24'); //w3c's ip-adress
  clientService.sin_port := htons(80); // port 7 to send echo's

  if connect(lsocket, TSockAddr(clientService), sizeof(clientService)) = SOCKET_ERROR then
    ShowMessage('N');



  sendbuf := 'GET / HTTP/1.1'+#13#10+'Host: w3c.org';
  bytesRecv := SOCKET_ERROR;
  bytesSent := send(lsocket, sendbuf, strlen(sendbuf), 0);
  ShowMessage(IntToStr(bytesSent) + ' bytes sent out there');

  while bytesRecv = SOCKET_ERROR do
  begin
    ShowMessage(IntToStr(bytesRecv));
    bytesRecv := recv(lSocket, recvbuf, 32, 0);
    ShowMessage(IntToStr(bytesRecv));
    if (bytesRecv = 0) or (bytesRecv = WSAECONNRESET) then
      ShowMessage('closed');
    Application.ProcessMessages;
  end;


  WSACleanup();


  ShowMessage('j');
Allerdings bekomme ich keine Antwort.

Gruß, Moritz

P.S.: Das ist zwar nicht ganz das, was ich will, da ich nicht an die IP Header rankomm, aber es ist ein guter Kompromiss.

neolithos 6. Apr 2005 09:54

Re: TCP/IP Packets: Sender IP
 
Delphi-Quellcode:
sendbuf := 'GET / HTTP/1.1'+#13#10#13#10
Versuch es erstmal so!


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:23 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