hi leute,
ich bins mal wieder. Ich habe nun weitergearbitet und bin von den indy komponenten nun wieder auf die server und clientsocket von Delphi zurückgekommen, weil ich damit einfach besser klarkomme und man mehr hilfen hat. Nun habe ich wieder mal ein problem ich schreibe erstmal dazu den Quelltext:
Client:
und der Quelltext von der serveranwendung
Server:
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.
kann mir da jemand weiterhelfen? Also Wertegang von der nickeingabe bis zur ausgefülten combobox. Wäre sehr freundlich
cu yoshie
ich bins mal wieder. Ich habe nun weitergearbitet und bin von den indy komponenten nun wieder auf die server und clientsocket von Delphi zurückgekommen, weil ich damit einfach besser klarkomme und man mehr hilfen hat. Nun habe ich wieder mal ein problem ich schreibe erstmal dazu den Quelltext:
Client:
Code:
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:=23; // 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.
und der Quelltext von der serveranwendung
Server:
Code:
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:=23; // 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.
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.
kann mir da jemand weiterhelfen? Also Wertegang von der nickeingabe bis zur ausgefülten combobox. Wäre sehr freundlich
cu yoshie