Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi nick senden (https://www.delphipraxis.net/2948-nick-senden.html)

yoshie 15. Feb 2003 15:52


nick senden
 
hi,

ich arbeite immer noch an meinem chatprogramm. Und ich habe es bis jetzt noch nicht hinbekommen, den nick vom editfels (nick.text) an den server zu schicken, wo er dann ausgelesen wird. Hier ist noch mal mein 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);
    procedure csConnect(Sender: TObject; Socket: TCustomWinSocket);
  private
    { Private-Deklarationen }
  public
  name,namer:string;
  end;

var
  hauptfenster: Thauptfenster;

implementation

{$R *.dfm}

procedure Thauptfenster.FormCreate(Sender: TObject);
begin
           cs.Port:=2003;            // Festlegung des Ports
           cs.host:=ip.text;         // Festlegung der IP
end;


procedure Thauptfenster.Button2Click(Sender: TObject);
var name:string;
begin
cs.Active:=true;        // Aufbau der Verbindung
end;


procedure Thauptfenster.Button1Click(Sender: TObject);
begin

          if cs.Socket.Connected=true then     // wenn Verbindung besteht,
          cs.Socket.SendText(nick.text+' '+':'+' '+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;



procedure Thauptfenster.csConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
socket.SendText(nick.text);

end;

end.

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
 socket.SendText('Herzlich Willkommen im Chat');     //Server sendet Text an neu angemeldeten Clients
 listbox1.Items.add(socket.ReceiveText);
 end;

 end.
Ich hoffe Ihr könnt mir diesmal helfen also ich möchte halt diesen string des nicknames an den server schicken und dort in eins listbox eintragen. Ich habe jetzt wirklich fast 2 wochen dran gearbeitet und ich bekomme es nciht hin. BITTE helft mir.

Danke schön im Vorraus

Thomas

iaby 15. Feb 2003 17:10

client:
Code:
cs.Socket.SendText('/nick' + nick.text+' '+':'+' '+text.text);
auslesen dann so:
server:

Code:
if copy(rec,1,5)= '/nick' then
  begin
  listbox1.add(copy(rec,6,length(rec)-6)
end;
habs nicht ausprobiert, sollte aber funzen!

yoshie 15. Feb 2003 17:14

re
 
vielen dank ich werde es gleich mal versuchen

yoshie 15. Feb 2003 17:24

re
 
also ich habe nun unter


Code:

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;

Code:
if copy(rec,1,5)= '/nick' then
  begin
  listbox1.add(copy(rec,6,length(rec)-6)
end;
geschrieben, aber funktionieren tut es immer noch cnith. Kann es sein, dass ich es an eine falsche stelle gesetzt habe? Im client habe ich das /nick eingetragen.

iaby 15. Feb 2003 19:13

Code:
 rec:=Socket.ReceiveText;
if copy(rec,1,5)= '/nick' then
 listbox1.add(copy(rec,6,length(rec)-6)
else
  begin
  for i := 0 to ss.Socket.ActiveConnections -1 do
    begin
    ss.socket.Connections[i].SendText(rec);
    end;
  end;
probiers mal so!

wenns nicht klappt, dann mach mal ein "showmessage(rec)" ganz am anfang, nachdem rec eingelesen wurde. dann siehts du was wirklich ankommt!
musst mal etwas rumexperiementieren!

yoshie 16. Feb 2003 12:53

re
 
vielen dank hat ir viel weitergeholfen


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:00 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