Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Problem mit der UDP.Broadcast suche (https://www.delphipraxis.net/111153-problem-mit-der-udp-broadcast-suche.html)

STS301 30. Mär 2008 17:24


Problem mit der UDP.Broadcast suche
 
hi

ich versuche gerade mit UDP.Broadcast andere Computer, welche das Programm xy geöffnet haben über LAN ausfindig zu machen nur leider klappt es nicht wirklich.

hier der Code
Delphi-Quellcode:
procedure TForm1.aktualClick(Sender: TObject); //die Aufrufung zum Aktualisieren
begin
 IdUDPClient1.Broadcast(idIPWatch1.CurrentIP, 10029);
end;


procedure TForm1.userverUDPRead(Sender: TObject; AData: TBytes; //Port 10029
  ABinding: TIdSocketHandle);
var
  ip, name: string;
begin
  ip := Copy(BytesToString(Adata), 0, length(Adata));
  with IdUDPClient1 do
  begin
    Host := ip;
    Active := true;
    Send(name, 10030, Form2.pcname.Text);
    Send(ip, 10030, IdIPWatch1.CurrentIP);
    Active := false;
  end;
end;

procedure TForm1.userverUDPRead(Sender: TObject; AData: TBytes; //Port 10030
  ABinding: TIdSocketHandle);
begin
  namen.Items.Add.Caption := Copy(BytesToString(Adata), 0, length(Adata));
  namen.Items.Add.Subitems.Add(Copy(BytesToString(Adata), 0, length(Adata)));
end;
der Server mit Port 10030 ist bei Broadcast auf "false"
client1.port= 10030, ebenfalls auf broadcast "false"
IPwatch1

der Server mit Port 10029 ist bei Broadcast auf "true"
client2.port= 10029, ebenfalls auf broadcast "true"
IPwatch2

alles auf Aktive= true

er sollte namen und Ip in die Listview(namen) eintragen

habe den Code in der DP gefunden, und bei der Person hat es auch funktioniert, nur halt bei mir nicht.

Mein Hinterkopf meint es fehlt etwas, ich weiß aber nicht was.

wäre dankbar für Hilfe

STS301 31. Mär 2008 14:07

Re: Problem mit der UDP.Broadcast suche
 
kann mir keienr helfen??

shmia 31. Mär 2008 14:26

Re: Problem mit der UDP.Broadcast suche
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier ein UDP Testprogramm, dass auch Broadcasts kann.
Einfach auf zwei Rechnern starten...

STS301 31. Mär 2008 15:39

Re: Problem mit der UDP.Broadcast suche
 
danke, es funktioniert wunderbar

aber ohne Source kann ich schwer sehen wo der Fehler bei mir ist

shmia 31. Mär 2008 16:42

Re: Problem mit der UDP.Broadcast suche
 
Zitat:

Zitat von STS301
aber ohne Source kann ich schwer sehen wo der Fehler bei mir ist

Ich find den Sourcecode leider nicht :-(
Aber du kannst jetzt prüfen, ob dein Problem bein Senden oder Empfangen liegt, wenn du das Tool und dein Programm auf den gleichen Port stellt.

STS301 31. Mär 2008 16:46

Re: Problem mit der UDP.Broadcast suche
 
:( wirklich nicht?? :(

schade, dass es jetzt nicht am am gleichen Port sind sie ja, nur ich weiß einfach nicht wo ich noch etwas umschreiben muss :?:

STS301 2. Apr 2008 07:04

Re: Problem mit der UDP.Broadcast suche
 
habe leider bis jetzt immer noch keinen brauchebaren Codehinweis gefunden.

*push*

shmia 2. Apr 2008 10:10

Re: Problem mit der UDP.Broadcast suche
 
Also ich finde den Sourcecode wirklich nicht; ich glaube, das Programm ist auch nicht von mir.
Du hast doch jetzt dein eigenes Programm und USUTest.exe.
Dann beide auf die gleiche Portnummer einstellen. Du brauchst 2 verschiedene Recher dazu!

Dann von deinem Programm einen Broadcast machen. Wird das von USUTest empfangen, ist deine Sendeseite in Ordnung.
Dann von USUTest einen Broadcast senden. Wird das von deinem Programm empfangen, in deine Empfangsseite in Ordnung.

Welche Seite funktioniert also bei dir nicht ?

DelphiKlaus 2. Apr 2008 10:37

Re: Problem mit der UDP.Broadcast suche
 
Hallo,

Du verwendest in Deinem Programm die lokale Variable "name". Diese ist zum einen nicht initialisiert und zum anderen hast Du mit dem Konstrukt

Delphi-Quellcode:
with IdUDPClient1 do
...
vermutlich keine eindeutige Referenz auf "name", da es IdUDPClient1.name wohl auch geben wird


MfG

Klaus

STS301 2. Apr 2008 16:15

Re: Problem mit der UDP.Broadcast suche
 
@shmia

beim USUTest funktionieren beide Seite ohne Probleme (mit 2 Rechnern). Nur bei meinem Programm funktioniert überhaupt nichts, wie soll ich dann testen ob es am Eingang oder am Ausgang happert.

@DelphiKlaus

wieso sollte es eine idUDPClient1.name funktion geben??
es ist ja in der Funktion "Send" einbegriffen.

das name nicht initialisiert ist, dass wird zwar nicht der Fehler sein, aber :wall:


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