![]() |
kleines chatprog
hi leute,
ich hätt da mal ein frage, ich arbete an einem kleinen chatprogramm und komme an einer stelle nciht weiter. Hier ist erstmal der quellcode von dem was ich bisher habe: Client:
Code:
und der Quelltext von der serveranwendung unit UClient; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ScktComp; type Thauptfenster = class(TForm) cs: TClientSocket; Memo1: TMemo; Button1: TButton; text: TEdit; ListBox1: TListBox; Button2: TButton; ip: TEdit; nick: TEdit; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure csRead(Sender: TObject; Socket: TCustomWinSocket); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public name:string; end; var hauptfenster: Thauptfenster; implementation {$R *.dfm} procedure Thauptfenster.FormCreate(Sender: TObject); begin cs.Port:=2003; // Festlegung des Ports cs.host:=ip.text; end; procedure Thauptfenster.Button2Click(Sender: TObject); var name:string; begin cs.Active:=true; // Aufbau der Verbindung name:=nick.text; //nickname in variable speichern end; procedure Thauptfenster.Button1Click(Sender: TObject); begin if cs.Socket.Connected=true then // wenn Verbindung besteht, cs.Socket.SendText(text.text); // sendet er den text end; procedure Thauptfenster.csRead(Sender: TObject; Socket: TCustomWinSocket); var rec:String; begin rec:=socket.ReceiveText; // der empfangene Text wird in die Variable 'rec' geschrieben Memo1.Lines.Add(rec); // Ausgabe der Variable 'rec' end; end. Server:
Code:
Nun mein Problem. Ich möchte nun das der user seinen nick eingibt, dann wird dieser beim connecten zum server geschickt und wieder an alle clients zurückgegeben. Am Ende soll es darauf hinauslaufen dass sämtliche eingeloggte user in eine Combobox bei der clientanwenduung zu sehen sind. unit UServer; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ScktComp; type TForm1 = class(TForm) ss: TServerSocket; Memo1: TMemo; ListBox1: TListBox; procedure FormCreate(Sender: TObject); procedure ssClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure ssClientConnect(Sender: TObject; Socket: TCustomWinSocket); private { Private-Deklarationen } public rec:String; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin ss.Port:=2003; // Festlegung des Ports ss.Active:=true; // Aktivierung der ServerSocket end; procedure TForm1.ssClientRead(Sender: TObject; Socket: TCustomWinSocket); var i: Integer; begin rec:=Socket.ReceiveText; //Empfangene Text wird in eine Variable geschrieben for i := 0 to ss.Socket.ActiveConnections -1 do begin ss.socket.Connections[i].SendText(rec); //Server sendet Text an alle Clients end; end; procedure TForm1.ssClientConnect(Sender: TObject; Socket: TCustomWinSocket); var i: Integer; name:string; begin for i := 0 to ss.Socket.ActiveConnections -1 do begin ss.socket.Connections[i].SendText('Herzlich Willkommen im Chat'); //Server sendet Text an neu angemeldeten Clients end; end; end. kann mir da jemand weiterhelfen? Also Wertegang von der nickeingabe bis zur ausgefülten combobox. Wäre sehr freundlich cu yoshie[/delphi] |
Schau Dir mal die Indy-Komponenten an, da gibt es dazu auch ein Demo. Borland selbst empfiehlt die Indy-Kompos anstatt seiner eigenen Client/Server-Socket Kompos.
...:cat:... |
re
ich habe es schon mit den indy versucht bin nur nicht so gut mit urechtgekommen. Kann mir denn keiner zu der konkreten frage helfen?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:08 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