Einzelnen Beitrag anzeigen

tarnschaf

Registriert seit: 6. Mär 2007
Ort: Aschaffenburg
2 Beiträge
 
#8

Re: Spiel! Suchen im Netzwerk!

  Alt 6. Mär 2007, 15:17
Es gibt auch eine Möglichkeit einen Broadcast auf nur einem Port durchzuführen, manchmal kann man dazu gezwungen sein, weil man an ein bestehendes Protokoll anlehnt.

Dazu braucht man beim Broadcaster nur eine Indy-Komponente, und zwar einen IdUDPServer. (Beispiel bezieht sich auf Indy Version 10)

Den Broadcast startet man mit
IdUDPServer1.Active := true; // Damit Antworten empfangen werden
IdUDPServer1.Broadcast('hallo', 1234); // Sendet 'hallo' an alle auf Port 1234

Die Antworten fängt man in OnUPDRead

procedure Form.IdUDPServer1UDPRead(Sender: TObject; AData: TBytes;
ABinding: TIdSocketHandle);
var
str : String;
begin
// Umwandeln der Daten in einen String
str := BytesToString(AData);
// IP-Adresse des Senders liegt in ABinding.PeerIP
end;


Interessanterweise scheint es dabei egal zu sein, ob man vorher einen Port oder die EnableBroadcast Eigenschaft des Servers festlegt. Weggelassen im Beispiel wurde die Gegenseite, d.h. der Client.

Grüße,
Michael
  Mit Zitat antworten Zitat