Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi kleines chatprog (https://www.delphipraxis.net/2768-kleines-chatprog.html)

yoshie 6. Feb 2003 10:53


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:

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.
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:=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.
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[/delphi]

sakura 6. Feb 2003 10:57

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:...

yoshie 6. Feb 2003 12:16

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