obwohl ich einige Threads zum thema broadcast gelesen hab konnte ich keine antwort auf meine frage finden ... deswegen folgendes:
ich bastel gerade an einen prog das unter anderem chat über udp beinhalten soll und bis jetzt hat auch alles geklappt, bis auf broadcast ...
vereinfacht lässt sich sagen:
auf der serverseite gibt es eine IdUDPServer-Komponente, die den Defaultort 11111 hat und in deren chatUDPRead-Event steht:
Delphi-Quellcode:
procedure TForm1.chatUDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
daten : TStringStream;
begin
daten := TStringStream.Create('');
try
daten.CopyFrom(AData, AData.Size);
chat.Broadcast(daten.DataString,11110);
finally
memo1.Lines.Add(daten.DataString);
daten.Free
end;
end;
auf der clientseite gibt es eine IdUDPClient-Komponente, die Port 11110 hat und im OnClick-Event des Senden-Buttons steht:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
temp : string;
begin
if sActive = True then
begin
temp := chat.LocalName + ': ' + Edit1.Text;
try
chat.Send(Combobox1.Text, 11111, temp);
temp := '';
finally
temp := chat.ReceiveString(2000);
end;
if temp <> '' then
memo1.Lines.Add(temp)
else
memo1.Lines.Add(chat.LocalName + ': Fehler beim Senden');
end
else
ShowMessage('Keine Verbindung');
end;
also es sollte passieren, dass der client über port 11111 die nachricht an den server schickt und der die über port 11110 an alle clients sendet, die diese dann wiederum im memo anzeigen. Entweder hab ich was grundlegend falsch verstanden, oder WAS WEIß ICH ...
zur Entwirrung, ja die Server- und die Client-Komponenten heißen chat^^
Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...