![]() |
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:
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. 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. Danke schön im Vorraus Thomas |
client:
Code:
auslesen dann so:
cs.Socket.SendText('/nick' + nick.text+' '+':'+' '+text.text);
server:
Code:
habs nicht ausprobiert, sollte aber funzen!
if copy(rec,1,5)= '/nick' then
begin listbox1.add(copy(rec,6,length(rec)-6) end; |
re
vielen dank ich werde es gleich mal versuchen
|
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:
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.
if copy(rec,1,5)= '/nick' then
begin listbox1.add(copy(rec,6,length(rec)-6) end; |
Code:
probiers mal so!
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; 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! |
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