AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Rechner identifizieren über Indy UDP Komponenten
Thema durchsuchen
Ansicht
Themen-Optionen

Rechner identifizieren über Indy UDP Komponenten

Ein Thema von little_budda · begonnen am 29. Dez 2006 · letzter Beitrag vom 1. Jan 2007
Antwort Antwort
Benutzerbild von little_budda
little_budda

Registriert seit: 5. Mai 2006
Ort: Velbert
246 Beiträge
 
Delphi 2006 Professional
 
#1

Rechner identifizieren über Indy UDP Komponenten

  Alt 29. Dez 2006, 20:23
Hallo,

ich denke mein Problem ist hier im Forum schon mehrfach angesprochen worden,
nur finde ich die passenden Threads zum Thema nicht.

Also,
Ich Pinge momentan alle Adressen im Subnetz über mehrere Threads an (Dank an Luckie)
Klappt auch.

Ich möchte nun gerne diese Funktion mit einem UDP Broadcast realisieren.
Leider habe ich keinen Dateizugriff auf die restlichen Rechner im Lan
und kann dem entsprechend dort keine Server plazieren.

Ich habe meinen IndyUdpClient eine Nachricht an die Broadcastadresee
in meine Subnetz schicken lassen und gehofft das mein IndyUdpServer
die Replys erhält ( ... für jedes sein OnRead Ereignis auslöst ... )
so das ich aus dem Reply die IP Adresse lesen kann.
Klappt leider nicht.

HostAdresse des Clients : 192.168.1.255 Port 0 ( Broadcastadresse )
HostAdresse des Servers : 0.0.0.0:0 ( Lesen von allen Ports ??? )
Nachricht : "who is alive" ( ??? )

Ich habe testweise mal die Windows Firewall abgeschaltet, hat aber auch nicht geholfen.

Wo liegt mein Fehler?

Gruß Holger.

Holger
Glück findet sich nicht im Code
Gefahren werden ist nur solange schön wie man selbst nicht lenken möchte ...
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Rechner identifizieren über Indy UDP Komponenten

  Alt 29. Dez 2006, 20:28
Ist Broadcast nicht 255.255.255.255ort?
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von little_budda
little_budda

Registriert seit: 5. Mai 2006
Ort: Velbert
246 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Rechner identifizieren über Indy UDP Komponenten

  Alt 29. Dez 2006, 20:30
Hallo,

also meines Wissens solte 255.255.255.255 ein Multicast sein.
Ich denke Multicasts kann ich ber UDP nicht versenden .?.

Gruß Holger.
Holger
Glück findet sich nicht im Code
Gefahren werden ist nur solange schön wie man selbst nicht lenken möchte ...
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Rechner identifizieren über Indy UDP Komponenten

  Alt 29. Dez 2006, 20:41
Kann sein, weiß ich nicht
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von little_budda
little_budda

Registriert seit: 5. Mai 2006
Ort: Velbert
246 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Rechner identifizieren über Indy UDP Komponenten

  Alt 30. Dez 2006, 15:14
Hallo,

wie in diesem Thread
beschrieben habe ich meinen Client testweise mal umgestellt
von "send" auf "broadcast" und einen festen Port eingestellt.
Der Code sieht jetzt so aus:
Delphi-Quellcode:
// Broadcast über den Client senden
procedure Tfrm_main.Button1Click(Sender: TObject);
var sSendText : string;
begin
  sSendText := 'Hallo Welt'; // Text für Nachricht zuweisen
  IdUDPServer1.DefaultPort:=10025; // Port am Server einstellen
  IdUDPServer1.Active := true; // Server aktiv schalten

  IdUDPClient1.Host := Edit1.Text; // IP für Broadcast zuweisen (192.168.1.255)
  idudpclient1.Port:=10025; // Port einstellen
  idudpclient1.BroadcastEnabled:=true; // Broadcast freigeben
  IdUDPClient1.Active := true; // Client aktiv schalten
  idudpclient1.Broadcast(sSendText, 10025); // Nachricht senden
  IdUDPClient1.Active := false; // Client inaktiv schalten

end;

// Nachrichten von Server empfangen
procedure Tfrm_main.IdUDPServer1UDPRead(Sender: TObject; AData: TBytes; ABinding: TIdSocketHandle);
var sRecievedText : string;
    ix : integer;
begin
  sRecievedText := ''; // Text löschen
  for ix := 1 to length(AData) // Nachricht aus dem Server UDP Read
    do sRecievedText := sRecievedText + chr(AData[ix]); // in String wandeln (Klartext)
  MessageDlg(pAnsiChar(sRecievedText), mtInformation, [mbOk], 0); // Klartext ausgeben
end;
Klappt aber trotz allem nicht.
Mein Server empfängt keine Nachricht.

Gruß Holger.

Holger
Glück findet sich nicht im Code
Gefahren werden ist nur solange schön wie man selbst nicht lenken möchte ...
  Mit Zitat antworten Zitat
Benutzerbild von little_budda
little_budda

Registriert seit: 5. Mai 2006
Ort: Velbert
246 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Rechner identifizieren über Indy UDP Komponenten

  Alt 1. Jan 2007, 09:13
Hallo,

wenn man den Server auf einem separaten Rechner laufen lässt dann klapt auch der Transfer per UDP.
Weiss nicht warum ich nicht Server und Client auf einem Rechner laufen lassen kann
aber Hauptsache ist das die Kommunikation jetzt klappt.

Leider löst das mein Problem nicht.
Da ich inzwischen erfahren habe das immer ein UDP-Server vorhanden sein muss
um einen UDP Broadcast zu beantworten kann ich UDP vergessen.

Ich werden diesen Thread schließen und mich an einem ARP Broadcast versuchen.

Gruß Holger.

Holger
Glück findet sich nicht im Code
Gefahren werden ist nur solange schön wie man selbst nicht lenken möchte ...
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Rechner identifizieren über Indy UDP Komponenten

  Alt 1. Jan 2007, 09:22
Zitat von little_budda:
....eine Nachricht an die Broadcastadresee
in meine Subnetz schicken lassen und gehofft das mein IndyUdpServer
die Replys erhält ...
Hai Holger,

welches Reply meinst Du denn? Beim UDP gibt es ja keine automatische Antwort von dem Rechner der das Packet erhalten hat (egal ob via Broadcast oder direkt an die IP gesendet). Du brauchst also in jedem Fall einen "Server" auf den Rechnern um deine TCP/UDP Packete empfangen und dann darauf reagieren zu können.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von little_budda
little_budda

Registriert seit: 5. Mai 2006
Ort: Velbert
246 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Rechner identifizieren über Indy UDP Komponenten

  Alt 1. Jan 2007, 09:58
Hallo,

ja das war mein Problem.
Wenn ich einen Ping schicke so antwortet mein Ziel automatisch.
Wenn ich aber ein transparentes Gerät anpinge (Router, Bridge, ...) bekomme ich keine Rückgabe.

Ich hatte gehofft das per UDP-Broadcast lösen zu können.
Und da war es wieder - Das Client/Server Problem
Aber mit einem ARP Broadcast sollte das klappen.
(Hoffnung)

Gruß Holger.
Holger
Glück findet sich nicht im Code
Gefahren werden ist nur solange schön wie man selbst nicht lenken möchte ...
  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 02:23 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