![]() |
Wie findet man raus, welcher Client den Text gesendet hat?
Hi!
Hoffe die frage ist nicht zu trivial für dieses Forum. flipper junior |
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:... |
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 ;-)). |
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:
Der Server macht dan folgendes mit den empfangenen Nachrichten:
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;
Delphi-Quellcode:
Der Client widerum macht mit empfangenem Text folgendes:
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;
Delphi-Quellcode:
Damit bekommt jeder den Text einmal und niemand doppelt! Ich hoffe das hat dir etwas geholfen! :spin:
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket); begin Memo1.Lines.Add(Socket.ReceiveText); end; MfG Matthias Volland |
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 13:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz