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;