AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi UDP-Broadcasts und die Antwort darauf
Thema durchsuchen
Ansicht
Themen-Optionen

UDP-Broadcasts und die Antwort darauf

Offene Frage von "UGrohne"
Ein Thema von UGrohne · begonnen am 31. Okt 2005 · letzter Beitrag vom 31. Okt 2005
 
UGrohne

Registriert seit: 12. Dez 2002
Ort: Pliezhausen
65 Beiträge
 
Delphi 7 Professional
 
#1

UDP-Broadcasts und die Antwort darauf

  Alt 31. Okt 2005, 03:49
Moin Leute,
ich hab eben ein neues Projekt angefangen und schon ein Problem, wo ich wohl mal wieder auf dem Schlauch steh:

Ich hab einen UDPServer und einen UDPClient, jeweils in unterschiedlichen Progs in einem Thread. Der Client sendet nun einen Broadcast auf einem bestimmten Port und wartet auf eine Antwort:
Delphi-Quellcode:
  //locate server via UDP-Broadcast
  FIdUdpClient.Port:=19000;
  FIdUdpClient.Active:=true;
  FIdUdpClient.Broadcast(UDP_SRVLOC_REQ,UDP_COMM_PORT);
  resp := FIdUdpClient.ReceiveString(UDP_REC_TIMEOUT);
  if resp <> 'then begin
    //Server found
    ind := PosEx('=',resp);
    resp := Copy(resp,ind+1,Length(resp)-ind);
    //execute event
    if Assigned(FOnSWServerFound) then
      OnSWServerFound(resp);
    end;
Der Server empfängt den Broadcast und soll darauf antworten:
Delphi-Quellcode:
procedure TSWUdpServer.Execute;
var inctext, clientip: String;
    clientport: Integer;
begin
  FIdUdpServer.BroadcastEnabled := true;
  FIdUdpServer.DefaultPort := UDP_COMM_PORT;
  FIdUdpServer.Active := true;
  while not Terminated do begin
    FIdUdpServer.ReceiveString(clientip,clientport,UDP_REC_TIMEOUT);
    if inctext = UDP_SRVLOC_REQ then
      ResponseToSRVLOCREQ(clientip);
    end;
  { Thread-Code hier einfügen }
end;

//==================== Send response to server-locate-request ==================
procedure TSWUdpServer.ResponseToSRVLOCREQ(clientip: String);
begin
  FIdUdpServer.Send(clientip,UDP_COMM_PORT,UDP_SRVLOC_RSP+GetLocalIps.Strings[0]);
end;
UDP_REC_TIMEOUT ist auf 2000 eingestellt. Das Phänomen ist nun, dass der Server das Paket korrekt empfängt und darauf reagiert, d.h. die Prozedur ResponseToSRVLOCREQ wird ausgeführt und dort sollte ja eigentlich auch ein UDP-Paket an den Client geschickt werden. Nur kommt nix raus, mit Ethereal hab ich das mal gecheckt, es wird kein Paket gesendet...
Uwe
Lieber 3 Stunden Vorlesung, als gar kein Internetzugang
  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 11:27 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