Ich habe ein kleinen Server geschrieben, der von einem Browser (firefox oder IE) eine Anfrage erhält.
Der Server soll nur eine kurze Nachricht zurückschicken.
Ich verwende dafür die Komponente TServerSocket.
// ====================================================================
Die Komponente ServerSocket1 von TServerSocket wird mit
Port=8002
ServerType=stNonBlocking
erzeugt.
/
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| / ==================================================================== Der folgende Code-Schnipsel macht mir Probleme: var Bfr: array of byte; BufSize: Cardinal;
procedure TForm1.ServerSocket1ClientWrite(Sender: TObject; Socket: TCustomWinSocket);
begin BufSize := Socket.ReceiveLength div SizeOf(Byte);
Bfr := nil; SetLength(Bfr, BufSize); Socket.ReceiveBuf(Pointer(Bfr)^, BufSize);
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var i : integer; begin i := Socket.SendText('Hallo vom Server');
end;
|
Wenn ich meinen Firefox oder Internet-Explorer so einrichte, dass sie nicht direkt auf das Netz zugreifen, sondern auf den Port des hier geschriebenen Servers,
so funktioniert die Methode ServerSocket1ClientWrite ohne Probleme.
Die Methode ServerSocket1ClientRead funktioniert auch, aber nicht sofort.
Erst wenn ich den Server beende, zeigt der Browser den Text "Hallo vom Server" an.
Daher meine Frage: Gibt es so etwas wie Socket.Flush(); damit der Browser den Text sofort anzeigt?
Was nicht funktioniert
Delphi-Quelltext
1: 2:
| Socket.Close; ServerSocket1.Listen(); |
Danke lg
anthoney
Moderiert von
matze: Delphi-Tags hinzugefügt