Einzelnen Beitrag anzeigen

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, 04: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