Einzelnen Beitrag anzeigen

sAibo

Registriert seit: 6. Mai 2004
20 Beiträge
 
#1

server connected, kann aber nichts zu client schicken ?!

  Alt 6. Mai 2004, 16:51
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;
  Mit Zitat antworten Zitat