Einzelnen Beitrag anzeigen

.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#9

Re: Broadcast - UDP und TCP in einem Projekt?

  Alt 4. Dez 2007, 19:32
Zitat von sirius:
Eigentlich gibt es bei UDP keine Unterscheidung zwischen Server und Client. Bei Indy wird es dennoch gemacht. Vielleicht, weill man beim Client davon ausgeht, dass nix empfangen wird und damit Code gespart werden kann.

Die UDPsocket-Komponente von Borland ist etwas schwach (da kann man auch gleich die WinAPI nehmen), deswegen habe ich mal bei Indy geschaut.
Du benötigst:
TidUDPServer mit folgenden Einstellungen (ich lege den Port mal auf 6000)
-DefaultPort: 6000
-BroadCastEnabled: True
-und wenn du etwas machen willst (empfangen oder senden): natürlich active auf true
und dann noch sowas hier:
Delphi-Quellcode:
procedure TForm1.IdUDPServerUDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);
var s:string;
begin
  setlength(s,aData.size);
  aData.Read(s[1],length(s));
  showmessage(s);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  idUDPServer.Send('255.255.255.255',6000,'Hallo');
end;
Edit: Aber ich bin in Indy nicht wirklich bewandert, vielleicht gibts noch andere Möglichkeiten (z.B. die Methode Broadcast)
Ok, mit der zweiten Prozedur, wird das dann an alle IPs gesendet? Also quasi von 0.0.0.0 bis 255.255.255.255?

Und ansonsten nehme ich noch nen UDP Client bei der ClientAnwendung und da dann noch ne Read und Send Methode?

Danke schonmal!

Edit: Achso, warum is das mit nem Stream und nich einfach nem String? Gibts keine Möglichkeit einfach simpel nen String zu versenden? Ohne Stream?
  Mit Zitat antworten Zitat