Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Chat Funktion (https://www.delphipraxis.net/117683-chat-funktion.html)

delphis spassbremse 23. Jul 2008 13:30

Re: Chat Funktion
 
also viel umändern musst du da nicht...

setz mal die procedure vor
"procedure TForm1.ChatClick(Sender: TObject); "

und ersetze
"form1.ServerSocket1.Socket.SendText(edit5.tex t); "

durch

"message_broadcast(form1.ServerSocket1.Socket, edit5.Text);"

Grüße,

Björn

angos 23. Jul 2008 13:35

Re: Chat Funktion
 
sehe ich das richtig, dass du nur den clientsocket initialisierst und dann versuchst über den Serversocket zu senden? Habe zwar mit Sockets noch nichts zu tun gehabt, aber das scheint doch das eigentliche Problem zu sein, oder?

delphis spassbremse 23. Jul 2008 13:42

Re: Chat Funktion
 
jap, das ist auch ein problem.

Nur ich hab gleich im ersten Post gesehen, dass es nicht funktionieren kann, da bei ServerSocket.socket.sendtext() kein empfänger angegeben ist.

Du kannst Daten nur an eine bestehende Verbindung gleichzeitig senden.

Bei ServerSocket.socket.sendtext() ist keine Verbindung angegeben.
Also sendet der ins nichts und löst ne exception aus.

Grüße,

Björn

Counter909 23. Jul 2008 14:00

Re: Chat Funktion
 
ahhh jetzt hat es endlich geklappt :-)



außerdem war noch ein fehler:

es muss so aussehen, um die nachricht zu erhalten:
Delphi-Quellcode:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
 memo1.Lines.Add(Socket.ReceiveText)
end;



vielen dank für die schnellen hilfen :-)

Counter909 23. Jul 2008 22:08

Re: Chat Funktion
 
oh sorry...



ist das normal, dass ich eine nachricht nur vom client zum server schicken kann ?

wen ich es andersrum mache, dann schmiert das programm ab :-|


SERVER:

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var text:string;
begin
memo1.Lines.Add('Host: '+edit1.Text+'');
serversocket1.Socket.SendText(edit1.Text);

end;

procedure TForm2.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  memo1.Lines.Add('Client: '+Socket.ReceiveText+'')
end;

Client:

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var text:string;
begin
 memo1.Lines.Add('Client: '+edit1.Text+'');
 clientsocket1.Socket.SendText(edit1.Text);
end;

procedure TForm2.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
var text:string;
begin
memo1.Lines.Add(Socket.ReceiveText)
end;

also ich kann nur in eine Richtung einen Text schicken


mfg

IceBube 24. Jul 2008 07:45

Re: Chat Funktion
 
Hallo!

Zitat:

Zitat von Counter909
ist das normal, dass ich eine nachricht nur vom client zum server schicken kann?...also ich kann nur in eine Richtung einen Text schicken

Ja, der Server empfängt die gesendeten Daten von den Clienten.

Also musst du auf der ServerForm einen "TServerSocket" + einen "TClientSocket" haben, auf der ClientForm jedoch brauchst du nur einen "TClientSocket"..

lg

Cyf 24. Jul 2008 07:57

Re: Chat Funktion
 
Zitat:

Zitat von IceBube
Also musst du auf der ServerForm einen "TServerSocket" + einen "TClientSocket" haben

TServerSocket reicht...

Zum Senden zum Client nochmals:

Delphi-Quellcode:
ServerSocket.Connections[i].SendText(TextStr);
Außerdem deklarierst du eine Menge lokale Variablen und nutzt sie dann nicht und Informationen gehören nicht im visuellen Bereich gespeichert.

Counter909 24. Jul 2008 17:29

Re: Chat Funktion
 
ah es hat geklappt :-)


nochmal für alle:
beim Server müsst ihr dann

Delphi-Quellcode:
serversocket1.Socket.Connections[0].SendText(text);
eingeben


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:52 Uhr.
Seite 2 von 2     12   

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