title image


Smiley Re: Rundmeldung senden
Also erstmal ist da nix mit TCP sondern da mußt du UDP nehmen. WEIL: TCP ist ein verbindungsorientiertes Programm. Zumindest müssen die Clients die IP-Adresse vom Server kennen. Wenn das nicht der Fall ist mußt du mit UDP arbeiten. Das ist ein verbindungsloses Protokoll. Und die besagten Broadcasts gehen eh nur mit UDP. Rein zufällig habe ich heute morgen endlich sowas hinbekommen und zwar mit Indy.



1. Pack dir einen TIdUDPClient und einen TIdUDPServer auf dein Form

2. Client.Active = TRUE

3. Beide UDP-Kompos Active = TRUE

4. Verbinde beim Server OnUDPRead:procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;

ABinding: TIdSocketHandle);

var

StrStream: TStringStream;

Str: String;

I: Integer;

begin

StrStream:= TStringStream.Create('');

try

StrStream.CopyFrom(AData, AData.Size);

Str:= StrStream.DataString;

Log.Items.Add('Server reads "' + Str + '"');

finally

StrStream.Free;

end;

end;Log ist eine normale TListBox.



Jetzt machst du noch einen Button drauf und im OnClick das:procedure TForm1.Button1Click(Sender: TObject);

var

sBuffer: String;

I: Integer;

begin

sBuffer:= 'Blabla';

with IdUDPClient1 do begin

Host:= '255.255.255.255';

Port:= 2050;

BroadCast(sBuffer, 2050);

Log.Items.Add('Client sends "' + sBuffer + '"');

end;

end;Jetzt ist es nur noch eine Frage dessen, was du da für Daten broadcastest. Aber du solltest am besten nur die IP-Adressen austauschen ( z.B. mit DelphiWorks / dwNetwork.pas / dwGetIPAdress ermitteln ) und dann auf eine TCP-Kommunikation wechseln. Das ist sehr viel sicherer.

  Mail an Codehunter schreiben (Keyword für Whitelist im Betreff lassen!)


geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: