ich muss sehr große Dateien(>20 MB) senden. Und da die WSA (Windows Socket API) nicht mehr als 1MB annimmt, zerteile ich den String (ja, ich lade die Datei in einen String) in 1024 Stücke und schicke ihn. Jedoch habe ich nur zum Test, mal einen String mit 14 Zeichen gesendet und Empfangen, und es kommt nur Schwachsinn raus... Wo liegt der Fehler?
Code: Alles auswählen
function Send(CMD: String; FSocket: TSocket): Int64;
var
SendLen: Int64;
Len: Int64;
CurSend: Integer;
const
MAX_CACHE = 4;
begin
Len := Length(CMD);
SendLen := 0;
CurSend := 0;
while ((SendLen < Len) and (CurSend <> -1)) do begin
If (Len - SendLen) < MAX_CACHE Then begin
CurSend := Winsock.send(FSocket, CMD, (Len - SendLen), 0);
Delete(CMD, 1 , CurSend);
SendLen := SendLen + CurSend;
end else begin
CurSend := Winsock.send(FSocket, CMD, MAX_CACHE, 0);
Delete(CMD, 1 , CurSend);
SendLen := SendLen + CurSend;
end;
end;
IF CurSend <> -1 Then
Result := SendLen
else
Result := -1;
end;