AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi UDP Senden/Empfangen
Thema durchsuchen
Ansicht
Themen-Optionen

UDP Senden/Empfangen

Ein Thema von dk3wx · begonnen am 24. Jan 2007
Antwort Antwort
dk3wx

Registriert seit: 3. Jan 2005
4 Beiträge
 
#1

UDP Senden/Empfangen

  Alt 24. Jan 2007, 10:09
Hallo,

ich habe ein Gerät im LAN das nur UDP empfangen und senden kann. Mit Turbo Delphi 2006 und der udpSocket Komponente versuche udp Pakete zu empfangen.

Das Senden klappt. Ich kann mit "ethereal" sehen wie die Daten an das Gerät gesendet werden und auch die richtige Antwort kommt an. Nur leider wird sie nicht an mein Programm weitergeleitet.

In dem Beispiel will ich nur sehen das Daten überhaupt ankommen, aber OnReceive meldet nichts und ich sehe an der Netzwerkschnittstelle ein ICMP was auf einen unbekannten Empfänger schliessen lässt. Mir fehlt also im Empfangsfall die Verbinding vom IP Stack zu meinem Programm.

Hat jemand eine Idee?


[/delphi]unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Sockets;

type
TForm1 = class(TForm)
UdpSocket1: TUdpSocket;
Button1: TButton;
Memo1: TMemo;
procedure UdpSocket1Receive(Sender: TObject; Buf: PAnsiChar;
var DataLen: Integer);
procedure Button1Click(Sender: TObject);
procedure UdpSocket1Connect(Sender: TObject);
procedure UdpSocket1Disconnect(Sender: TObject);
procedure UdpSocket1Error(Sender: TObject; SocketError: Integer);

private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;

var
Form1: TForm1;
DataLen :Integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var buffer : array[0..14] of Byte;

begin
Form1.Memo1.Lines.Add('UDP Local: '+ udpSocket1.LocalHostAddr);
Form1.Memo1.Lines.Add('UDP Remote: '+ udpSocket1.RemoteHost);

udpSocket1.Connect;
buffer[0]:=$80;
buffer[1]:=$02;
buffer[2]:=$01;
buffer[3]:=$00;
buffer[4]:=$81;
buffer[5]:=$04;
buffer[6]:=$C0;
buffer[7]:=$A8;
buffer[8]:=$73;
buffer[9]:=$02;
buffer[10]:=$82;
buffer[11]:=$02;
buffer[12]:=$12;
buffer[13]:=$86;
buffer[14]:=$00;

udpSocket1.Sendbuf(buffer,14);
Sleep(1000);

Form1.Memo1.Lines.Add('UDP Receive : '+ inttostr(udpSocket1.BytesReceived));
udpSocket1.Disconnect;
end;


procedure TForm1.UdpSocket1Connect(Sender: TObject);
begin
Form1.Memo1.Lines.Add('connect');
end;

procedure TForm1.UdpSocket1Disconnect(Sender: TObject);
begin
Form1.Memo1.Lines.Add('disconnect');
end;

procedure TForm1.UdpSocket1Error(Sender: TObject; SocketError: Integer);
begin
Form1.Memo1.Lines.Add('UDP Error : '+ inttostr(SocketError));
end;

procedure TForm1.UdpSocket1Receive(Sender: TObject; Buf: PAnsiChar;
var DataLen: Integer);

begin
//Form1.UdpSocket1.ReceiveBuf(puffer,DataLen);
Form1.Memo1.Lines.Add('UDP Rec : '+ inttostr(DataLen)+ ' Byte');
end;


end.[/delphi]

tnx Bernd
  Mit Zitat antworten Zitat
Antwort Antwort


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:54 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