Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Problem bei einem einfachem chat mit Client und ServerSocket (https://www.delphipraxis.net/125472-problem-bei-einem-einfachem-chat-mit-client-und-serversocket.html)

Muffel 6. Dez 2008 20:10


Problem bei einem einfachem chat mit Client und ServerSocket
 
Guten Abend. Ich habe ein Problem mit meinem Chat.

Der Server soll dem Clienten eine Nachricht senden und der Client kann genauso dem Server eine nachricht senden. Jedoch gibt es bei mir ein Problem

Der Client emfängt zwar die nachricht vom Server jedoch empfängt der Server nicht die nachricht vom Client...

Client
Delphi-Quellcode:
unit Client;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ScktComp, StdCtrls;

type
  TForm1 = class(TForm)
    nicklbl: TLabel;
    nicked: TEdit;
    nickbut: TButton;
    adresseed: TEdit;
    connectbut: TButton;
    adresselbl: TLabel;
    chatlog_memo: TMemo;
    nachrichted: TEdit;
    sendenbut: TButton;
    ClientSocket: TClientSocket;
    procedure ClientSocketError(Sender: TObject; Socket: TCustomWinSocket;
      ErrorEvent: TErrorEvent; var ErrorCode: Integer);
    procedure ClientSocketConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
    procedure sendenbutClick(Sender: TObject);
    procedure connectbutClick(Sender: TObject);
    procedure nickbutClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  nickname : String;

implementation

{$R *.dfm}

procedure TForm1.ClientSocketError(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
ErrorCode := 0;
end;

procedure TForm1.ClientSocketConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
adresselbl.Enabled := false;
adresseed.Enabled := false;
connectbut.Enabled := false;
nicklbl.Enabled := true;
nicked.Enabled := true;
nickbut.Enabled := true;
end;

procedure TForm1.ClientSocketRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
str: string;
begin
str := ClientSocket.Socket.ReceiveText;
chatlog_memo.Lines.Add(str);
end;

procedure TForm1.sendenbutClick(Sender: TObject);
begin

chatlog_memo.Lines.Add(nickname + ' sagt: ' + nachrichted.Text);
ClientSocket.Socket.SendText(nickname + ' sagt: ' + nachrichted.Text);
nachrichted.Text := '';
end;

procedure TForm1.connectbutClick(Sender: TObject);
begin
ClientSocket.Host := adresseed.Text;
ClientSocket.Port := 2000;
ClientSocket.Active := true;
end;

procedure TForm1.nickbutClick(Sender: TObject);
begin
nickbut.Enabled := false;
nicked.Enabled := false;
nicklbl.Enabled := false;
nickname := nicked.Text;
chatlog_memo.Enabled := true;
nachrichted.Enabled := true;
sendenbut.Enabled := true;
end;
Server
Delphi-Quellcode:
    sendbut: TButton;
    server: TServerSocket;
    procedure nickbutClick(Sender: TObject);
    procedure waitbutClick(Sender: TObject);
    procedure serverClientConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure serverClientError(Sender: TObject; Socket: TCustomWinSocket;
      ErrorEvent: TErrorEvent; var ErrorCode: Integer);
    procedure sendbutClick(Sender: TObject);
    procedure serverClientRead(Sender: TObject; Socket: TCustomWinSocket);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
   nickname : String;
implementation

{$R *.dfm}

procedure TForm1.nickbutClick(Sender: TObject);
begin

nickbut.Enabled := false;

nicked.Enabled := false;

nicklbl.Enabled := false;

nickname := nicked.Text;




waitbut.Enabled := true;
end;

procedure TForm1.waitbutClick(Sender: TObject);
begin
server.Port := 2000;

server.Active := true;
end;

procedure TForm1.serverClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
chatlog.Enabled := true;

msged.Enabled := true;

sendbut.Enabled := true;
end;

procedure TForm1.serverClientError(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
ErrorCode := 0;

ShowMessage('Schwul?');
end;

procedure TForm1.sendbutClick(Sender: TObject);

var

i: integer;

begin
 

chatlog.Lines.Add(nickname + ' sagt: ' + msged.Text);

for i:=0 to server.Socket.ActiveConnections-1 do begin

server.Socket.Connections[i].SendText(nickname + ' sagt: ' + msged.Text);

end;

msged.Text := '';
end;

procedure TForm1.serverClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
str: string;

begin


str := ClientSocket.Socket.ReceiveText;

chatlog_memo.Lines.Add(str);
end;
weis einer wo der fehler ist ?

lg

Muffel

blink182 6. Dez 2008 21:42

Re: Problem bei einem einfachem chat mit Client und ServerSo
 
beim senden seh ich jetzt kein problem
von daher liegt das problem wohl beim OnClientRead des servers

Zitat:

Delphi-Quellcode:
procedure TForm1.serverClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
str: string;

begin


str := ClientSocket.Socket.ReceiveText;

chatlog_memo.Lines.Add(str);
end;

um genauer zu sein "ClientSocket.Socket.ReceiveText" - richtiger wäre hier
Delphi-Quellcode:
Socket.ReceiveText
soweit ich das hier in erinnerung habe ;) probier das mal


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz