Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Wie findet man raus, welcher Client den Text gesendet hat? (https://www.delphipraxis.net/7007-wie-findet-man-raus-welcher-client-den-text-gesendet-hat.html)

jungdelphin 29. Jul 2003 20:34


Wie findet man raus, welcher Client den Text gesendet hat?
 
Hi!

Hoffe die frage ist nicht zu trivial für dieses Forum.

flipper junior

sakura 29. Jul 2003 21:00

Re: Wie findet man raus, welcher Client den Text gesendet ha
 
Mit welchen Komponenten arbeitest Du denn? Du musst Dir angewöhnen, nicht so sehr mit Deinen Informationen zu geizen ;-)

...:cat:...

jungdelphin 29. Jul 2003 21:32

Re: Wie findet man raus, welcher Client den Text gesendet ha
 
Einfach nur TClientSocket und TServerSocket und Delphi 6 [Personal :-(]
(bin nicht so der große Programmcracker)

Ich möchte für den Chat einfach nur wissen, von welchem client die Nachricht stammt, um den anderen diese auch zu senden, dem sender selbst aber natürlich nicht (ein bissel ökonomie kann auch in Delphi nicht schaden ;-)).

hircusmutzus 30. Jul 2003 20:41

Re: Wie findet man raus, welcher Client den Text gesendet ha
 
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! :spin:

MfG Matthias Volland

jungdelphin 30. Jul 2003 21:01

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

Danke für die Hilfe. Ich habe es mittlerweile anders gelöst:
Der Server merkt sich die SocketHandels und die Clientnamen als records
in einer list und über die Handles kann man ja die clients idetifizieren. Das mit den Handles war wohl was ich gesucht habe.

Trotzdem danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz