AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi per UDP Nachricht an alle senden...WIE?
Thema durchsuchen
Ansicht
Themen-Optionen

per UDP Nachricht an alle senden...WIE?

Ein Thema von torud · begonnen am 9. Mai 2006 · letzter Beitrag vom 9. Mai 2006
 
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#1

per UDP Nachricht an alle senden...WIE?

  Alt 9. Mai 2006, 10:48
Hallo Wissende,

ich kann mir vorstelle, dass Euch dieses Thema langweilt, aber leider hat mich die Hilfe, bzw. die Demo von Indy nicht weitergebracht. Ich habe das Problem, dass ich die Beispielanwendung für den Server und den Client compiliert habe, es aber leider nur lokal funktioniert, dass ich vom Client an den Server was sende.

Da ich aber eine andere Funktionalität benötige, nämlich das der Server an die Clients per UDP Nachrichten versendet, habe ich mir das einfach nur so umgebaut, dass lokal auch so funzt. Wenn ich aber nun im Netzwerk meine Clientapplikationen starte und vom Server aus ne Nachricht sende, erscheint bei meinen Clients keine Messagebox, wie ich es als Beispiel erstellt habe.

Was mache ich falsch? Muss ich Broadcast aktivieren und sonst noch was einstellen, damit alle Clients vom Server was empfangen?

Diesen Code hier verwende ich im Client, wo ich die UDPServer-Komponente verwende:

Delphi-Quellcode:
procedure TForm1.UDPServerUDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);
var
  DataStringStream: TStringStream;
  s: String;
begin
  DataStringStream := TStringStream.Create('');

  try
    DataStringStream.CopyFrom(AData, AData.Size);
    ShowMessage('Received "' + DataStringStream.DataString + '" from ' + ABinding.PeerIP + ' on port ' + IntToStr(ABinding.PeerPort));
    s := 'Replied from ' + UDPServer.LocalName + ' to "' + DataStringStream.DataString + '"';
    ABinding.SendTo(ABinding.PeerIP, ABinding.PeerPort, s[1], Length(s));
  finally
    DataStringStream.Free;
  end;
end;
Und das hier passiert, wenn ich am Server einen Button betätige:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  MessageID: Integer;
  ThisMessage: String;
  ReceivedString: String;
begin
  //MessageID := Random(MAXINT);
  ThisMessage := 'Message: ' + 'Nachricht von Sam';//IntToStr(MessageID);
  UDPMemo.Lines.Add('Sending ' + ThisMessage);
  UDPClient.Send(ThisMessage);
  ReceivedString := UDPClient.ReceiveString();
  if ReceivedString = 'then
  UDPMemo.Lines.Add('No response received from the server after ' + IntToStr(UDPClient.ReceiveTimeout) + ' millseconds.')
  else
  UDPMemo.Lines.Add('Received: ' + ReceivedString)
end;
Warum ist das nur so kompliziert?
Danke
Tom
  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 20:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz