Moin und

im Forum!
anthoney hat folgendes geschrieben: |
Dazu verwende ich die Klasse TServerSocket;
Per Firefox oder IE schicke ich eine Anfrage an den Server:
Der Server soll die Anfrage nur an den Browser zurückschicken. |
Was soll das werden?

Ein HTTP-Server?

Das geht zwar grundsätzlich auch mit den Sockets, aber dafür sind die nun wirklich nicht gut geeignet. Schau dir mal
TIDHTTP von den
INDY-KOMPONENTEN an, damit geht das sicher besser.
anthoney hat folgendes geschrieben: |
| Das Speichern über den Buffer führt zu einem anderen Ergebenis als das Speichern Byteweise. Wo habe ich hier einen Denkfehler? |
Du dereferenzierst den Zeiger nicht.

Aber ich würde das sowieso über einen String machen, das geht sehr viel eleganter, als mit einem
array of Byte (ist aber grundsätzlich natürlich schon egal).
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| var Buffer: String;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var FS: TFileStream; begin Buffer := Socket.ReceiveText; FS := TFileStream.Create('C:\Test.txt',fmOpenWrite or fmShareDenyWrite); try FS.Seek(0,soFromEnd); FS.Write(PChar(Buffer)^,Length(Buffer)); finally FreeAndNil(FS); end; Socket.SendText(Buffer); end; |
anthoney hat folgendes geschrieben: |
| Socket.SendBuf(Bfr, BufSize) schickt ebenfalls nicht die Bytes, die sich in dem Buffer befindne, sondern weniger und schneidet diese ab. Warum? |
Das zu erklären, ist leider nicht ganz einfach, weil es gleich mehrere Dinge auf einmal betrifft.

Das Hauptproblem dürfte aber deine Annahme sein, dass der gesendete Datenblock komplett beim Empfangsereignis eingetroffen ist. Dem ist aber nicht so, es werden bei jedem Ereignis max. 8kb von der WSA abgeliefert. Daraus folgt, dass der gesendete Datenblock in 8kb-Stücken angenommen werden muss.
Weiterhin: du verwendest die Ereignisse "verkehrt rum".
OnClientRead

Server soll Daten vom Client annehmen
OnClientWrite

Verbindung zum Client ist bereit für weitere Sendedaten des Servers (Achtung! Gibt hier ein Problem!
Mehr Infos dazu).
cu
Narses
There are 10 types of people - those who understand binary and those who don´t.