Delphi-PRAXiS
Seite 1 von 2  1 2      

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

Lucifer 18. Jan 2008 10:43


Internet Chat
 
Hallo

Ich bin dabei einen chat zu programmieren
aber ich hab ein problem:

Der client schickt die nachricht an den Server (werden in einem memo angezeigt)
doch der Server verschickt den erhaltenen Text nicht zurèck an die clients

Das ist der Server
Zitat:

var
Form1: TForm1;
MSG: String;

implementation

{$R *.DFM}

procedure TForm1.ServerSocketClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
MSG := Socket.ReceiveText;

Memo1.Lines.Add(MSG);

Socket.SendText('Server is now Online');
end;
Das ist der Client

Zitat:

procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket.Socket.SendText(edit1.text+' : ' + Memo2.Lines.Text);
end;

procedure TForm1.ClientSocketRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
memo1.lines.add(clientsocket.Socket.ReceiveText);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ClientSocket.Active:=TRUE;
if(ClientSocket.Active)then
ClientSocket.Socket.SendText(edit1.text+' has Connected');
end;
Ich will nàmlich dass wenn ein Client einen Text an den Server verschickt, dass der Server den Text an alle Clients zurückschickt
damit diese ja den text lesen können.
Nur geht das nicht.

Im Server hab ich auch ein Memo damit ich mir ansehen kann was von den Clients verschickt wurde.
Den Text der Clients erhält der Server und schreibt auch ins Memo rein.

Port ist richtig gewählt und wurden auf router/modem und firewall freigegeben und ist in diesem fall nicht das problem.
Ip hab ich die IP/Wan IP von meinem PC benutzt da er sowohl als Server als auch als Client fungieren soll.

Ich wàre dankbar wenn man mir den Grund nennen wèrde warum es nicht geht und mir erklären kénnte wie ich es machen könnte.
Vielen Dank

sirius 18. Jan 2008 10:46

Re: Internet Chat
 
1. Der Server schickt nur an den Client zurück, von dem auch gesendet wurde
2. Warum verwendest du in ClientSocketRead nicht das CustomWinSocket, was in den Parametern steht?

Lucifer 18. Jan 2008 10:52

Re: Internet Chat
 
ok punkt2 war ein blöder fehler.

Aber wie soll ich das denn nun machen damit der Text des Clients an den Server abgegeben wird und dieser dann an alle clients dann schickt?

sirius 18. Jan 2008 10:54

Re: Internet Chat
 
Diesmal musst du wirklich nicht das übergebene Socket nehmen, sondern dein Serversocket verwaltet in seinen Eigenschaften irgendow eine Liste aller ClientSockets. Und dies eListe musst du mit einer ForSchleife durchgehen und an jeden Clientsocket einzeln senden.

Muetze1 18. Jan 2008 10:55

Re: Internet Chat
 
Zitat:

Zitat von Lucifer
Ich will nàmlich dass wenn ein Client einen Text an den Server verschickt, dass der Server den Text an alle Clients zurückschickt damit diese ja den text lesen können.
Nur geht das nicht.

Ich sehe auch nirgendwo einen Code wo du dies versuchst bzw. machst. Von daher: was ist denn nun deine eigentliche Frage bzw. das eigentliche Problem?

Lucifer 18. Jan 2008 10:58

Re: Internet Chat
 
Ja ich will ja wissen wo ich grad meinen Fehler mache.
Irgendwie hab ich nàmlich das gefühl ich vergesse was...

Und da ich erst angefangen habe mit Sockets zu arbeiten weis ich auch leider nicht wie man dann die Liste vom Servsocket aufruft UND danach auch an Die gefundenen Clients dann auch etwas verschickt.

sirius 18. Jan 2008 11:01

Re: Internet Chat
 
TServersocket.Socket.ActiveConnections
TServersocket.socket.Conections[x]

Lucifer 18. Jan 2008 11:40

Re: Internet Chat
 
Also

Zitat:

Connection:=ServerSocket.Socket.ActiveConnections;
for i:=1 to Connection do
begin
...
end;
Damit gehe ich die Connections durch

Aber wie soll ich das machen mit dem an die einzelnen Clients schicken?

Serversocket.Socket.Connections[X];

Was genau macht den dieser befehl?
In der Hilfe steht nichts.

Und wenn ich ihn mit i oder Connection einsetze dann crasht der server mit ner error
Zitat:

Project chat_server.exe raised exception class eListError with message'List index out of bounds(1)'

sirius 18. Jan 2008 11:43

Re: Internet Chat
 
Delphi-Quellcode:
for i:=0 to ServerSocket.Socket.ActiveConnections-1 do
  ServerSocket.Socket.Conecctions[i].SendText('...');

Lucifer 18. Jan 2008 11:51

Re: Internet Chat
 
Oh mein gott...

hab nicht bemerkt dass man nach connections noch mehr funktionen ausführen kann
Vielen Dank für die Hilfe

Dies hatt mich genug gelehrt.

Bei weiteren Fragen zum Chat Program stelle ich sie dann hier


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:30 Uhr.
Seite 1 von 2  1 2      

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