Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi server connected, kann aber nichts zu client schicken ?! (https://www.delphipraxis.net/21698-server-connected-kann-aber-nichts-zu-client-schicken.html)

sAibo 6. Mai 2004 16:51


server connected, kann aber nichts zu client schicken ?!
 
Hi,

Ich wollte ein kleines "Chat" Programm schreiben, indem ich über die WinSockets
einfach einen string per "SendText" schicke.

Über ServerSocketClientConnect bzw. ClientSocketConnect geb ich auf jeder seite jeweils die meldung "connected" aus, sobald der Fall, dass sie verbunden sind halt eintritt. Das funktioniert soweit auch.

Über ein Edit Feld kann ich dann auch ohne Probleme Nachrichten zum Server schicken.
Vom Server aus zum Client geht es allerdings nicht...?
Obwohl beides eigentlich identisch ist.

Als Fehler Meldung bekomm ich:
"Eine Anforderung zum Senden oder Empfangen von Daten wurde verhindert, da send Socket nicht verbunden ist und (beim senden über ein Datagrammsocket mit einem sendto-Aufruf) keine Adresse angegeben wurde (10057), auf API'send'"
Keine Adresse angegeben? Ich dachte der Server hat keinen .Host da er keine Adresse braucht, er wartet ja auf einen Clieenten

Ich bedankt mich schonmal im voraus und würd mich freuen wenn mir jemand helfen könnte den Denkfehler in meinem Code zu finden.

Gruß Tobi

Hier der Code
Delphi-Quellcode:
procedure TForm1.serverdisconnectClick(Sender: TObject);
begin
     ServerSocket.Free;
end;

procedure TForm1.serverconnectClick(Sender: TObject);
begin
     ServerSocket.Open;
     servermemo.Lines.Add('...wartet auf Client');
end;

procedure TForm1.ServerSocketClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  MSG: String;
begin
  MSG:=Socket.ReceiveText;    //Der Text wird in der Variable MSG gespeichert
  servermemo.Lines.Add(MSG);       //Der Text wird einem MemoFeld hinzugefügt
end;

procedure TForm1.clientconnectClick(Sender: TObject);
begin
     ClientSocket.Host:='127.0.0.1';
     ClientSocket.open;
end;

procedure TForm1.clientdisconnectClick(Sender: TObject);
begin
     ClientSocket.Free
end;

procedure TForm1.clientsendClick(Sender: TObject);
begin
     ClientSocket.Socket.SendText(clienttext.text);
end;

procedure TForm1.ServerSocketClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
     servermemo.Lines.Add('***Connected.');
end;

procedure TForm1.ClientSocketConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
     clientmemo.Lines.Add('***Connected.');
end;

procedure TForm1.serversendClick(Sender: TObject);
begin
     ServerSocket.Socket.SendText(servertext.text); // !!! Hier kommt der Fehler !!! 


end;

procedure TForm1.ClientSocketRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  MSG2: String;
begin
  MSG2:=Socket.ReceiveText;    //Der Text wird in der Variable MSG gespeichert
  clientmemo.Lines.Add(MSG2);       //Der Text wird einem MemoFeld hinzugefügt
end;

Jörn 6. Mai 2004 17:22

Re: server connected, kann aber nichts zu client schicken ?!
 
Delphi-Quellcode:
serversocket1.Socket.Connections[0].SendText('bla');
So musst du das versenden. Die Zahl nach Connections ist die Kennnummer des Clients der die Nachricht bekommen soll. Wenn alle die Nachricht erhalten sollen, musst du das mit einer Schleife machen.

sAibo 6. Mai 2004 19:57

Re: server connected, kann aber nichts zu client schicken ?!
 
:-)

danke für die schnelle antwort
des problem wäre somit erstmal gelöst :)

DataCool 6. Mai 2004 21:32

Re: server connected, kann aber nichts zu client schicken ?!
 
Hi,

deshalb sollte man besser mit den Indys arbeiten, da hat man im Server für jede Connection einen eigenen Thread.
Außerdem bietet Indy jede Menge andere Vorteile gegenüber den normalen Sockets, wurden hier im Forum schon alle erwähnt !

Gruß Jan

sAibo 10. Mai 2004 17:35

Re: server connected, kann aber nichts zu client schicken ?!
 
Hi, ich habe mich noch nicht wirklich mit Indis auseinander gesetzt. Nur kurz über das ein oder andere Tutorial drüber gelesen.
Das kleine Problem, dass ich da hatte ist aber zudem für nen Projekt für die Schule und dort arbeiten wir mit Delphi 5 und da sind soweit ich weiß die Indikomponenten noch nicht dabei.
Also auf jeden Fall bei unserer Version nicht.

Trotzdem danke
Gruß Tobi

Jens Schumann 10. Mai 2004 17:47

Re: server connected, kann aber nichts zu client schicken ?!
 
Zitat:

Zitat von DataCool
Hi,

deshalb sollte man besser mit den Indys arbeiten, da hat man im Server für jede Connection einen eigenen Thread.
Außerdem bietet Indy jede Menge andere Vorteile gegenüber den normalen Sockets, wurden hier im Forum schon alle erwähnt !

Gruß Jan

Wenn man weiß wie bietet auch TServerSocket pro Verbindung einen Thread. Dafür muss man mit blockierenden Sockets arbeiten. Wenn ich mich nicht irre arbeiten die Indy-Komponenten ausschließlich mit blockierenden Sockets. Deshalb gibt es wohl auch die Indy-Komponente TIdAntiFreeze.

Baer 30. Okt 2005 15:05

Re: server connected, kann aber nichts zu client schicken ?!
 
Ma ne frage , wie kann man vom indy server dem client etwas schicken ?

Net7 30. Okt 2005 19:40

Re: server connected, kann aber nichts zu client schicken ?!
 
Zitat:

Zitat von DataCool
Hi,

deshalb sollte man besser mit den Indys arbeiten, da hat man im Server für jede Connection einen eigenen Thread.
Außerdem bietet Indy jede Menge andere Vorteile gegenüber den normalen Sockets, wurden hier im Forum schon alle erwähnt !

Gruß Jan

Also wenn er sich gerade frisch mit Sockets beschäftigt sollte er die "normalen" Sockets auch nehmen und mit ihnen rumexperimentieren. Somit lernt er wie das ganze funktioniert.




Bei den Indys lernt man fast nix mehr, weil die einem schon viele Sachen abnehmen.

Wenn ich mich nicht irre, haben die "normalen" Socket auch für jede Verbindung einen eigenen Thread.


Und die Indys haben keine Vorteile, das ist Blödsinn, ich nenne sowas zusätzlich hinzugefügte Funktionen. :wink:


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