![]() |
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; |
Re: server connected, kann aber nichts zu client schicken ?!
Delphi-Quellcode:
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.
serversocket1.Socket.Connections[0].SendText('bla');
|
Re: server connected, kann aber nichts zu client schicken ?!
:-)
danke für die schnelle antwort des problem wäre somit erstmal gelöst :) |
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 |
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 |
Re: server connected, kann aber nichts zu client schicken ?!
Zitat:
|
Re: server connected, kann aber nichts zu client schicken ?!
Ma ne frage , wie kann man vom indy server dem client etwas schicken ?
|
Re: server connected, kann aber nichts zu client schicken ?!
Zitat:
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 04:07 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