Einzelnen Beitrag anzeigen

hircusmutzus
(Gast)

n/a Beiträge
 
#4

Re: Wie findet man raus, welcher Client den Text gesendet ha

  Alt 30. Jul 2003, 20:41
Hi,

ich nehme mal an dass du irgendwie eine Memo-Komponente verwendest, um den Text darzustellen. Wenn der Client auf den "Senden"-Button klickt, sendest du den Text einfach an den Server ohne sie in dein Memo zu schreiben.

Delphi-Quellcode:
procedure TForm1.SendClick(Sender: TObject);
begin
  if connected = true then begin
  { connected ist einfach nur eine Variable um zu gucken, ob der Client mit dem Server verbunden ist }
  ClientSocket1.Socket.SendText(Edit1.Text + ': ' + Edit2.Text);
  {Edit1.Text ist der eingegebene Nick und Edit2.Text der eingegebene Text }
  Edit2.SetFocus;
  end;

  if connected = false then begin
  MessageDlg('Sie müssen erst eine IP-Adresse eingeben und eine Verbindung mit dem Server aufbauen!', mtInformation, [mbok], 0);
  Edit3.SetFocus;
  end;
end;
Der Server macht dan folgendes mit den empfangenen Nachrichten:

Delphi-Quellcode:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var startwert, connections: integer;
    text: String;
begin
  startwert := 0;
  { Diese Variable ist einfach für die while-Schleife }
  connections := ServerSocket1.Socket.ActiveConnections;
  { Zählt die verbundenen Clients, auch für die while-Schleife }
  text := Socket.ReceiveText;
  { Hier wird einfach der empfangene Text in der Variable gespeichert }
  Memo1.Lines.Add(text);
  { Der Text wird beim Server ins Memo kopiert }
  while startwert < connections do
    begin
      ServerSocket1.Socket.Connections[startwert].SendText(text);
      inc(startwert);
    end;
  { Das ist das wichtigste! }
end;
Der Client widerum macht mit empfangenem Text folgendes:

Delphi-Quellcode:
procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Memo1.Lines.Add(Socket.ReceiveText);
end;
Damit bekommt jeder den Text einmal und niemand doppelt! Ich hoffe das hat dir etwas geholfen!

MfG Matthias Volland
  Mit Zitat antworten Zitat