-
Так а как надо реагировать то?, ну с -1 - отдельный разговор хотя бы потому что в вычислениях бред пойдет, но а с нулем то что?, веди при LenRes1=0 оно все равно не равно len которая в данном случае равна 68096 и следовательно LenRes2 = 0 + 0, а lenRes1 = 68096 - 0 т.е. тем же самым 68096...
-
Или там заново надо писать TcpClient1.Active := True;?
-
Сам-то как думаешь ? Или ты отвык (или никогда не умел ?) думать ?
-
думаю надо, зачем сразу оскорблять то? =))))
-
Коротко и ясно... procedure TForm1.TcpServer1Accept(Sender: TObject;
ClientSocket: TCustomIpClient);
var
Stream:TFileStream;
buf:array[byte] of byte;
len:integer;
begin
Stream:=TFileStream.Create('c:\file_'+FormatDateTime('ddmmyyyy_hhmmss',Now)+'.txt', fmCreate);
try
while ClientSocket.Connected do
begin
len:=ClientSocket.ReceiveBuf(buf,SizeOf(buf),0);
if len<=0 then Break;
Stream.WriteBuffer(buf,len);
end;
finally
Stream.Free;
end;
end;
-
Сохраняется сразу в файл, концом передачи/файла считается отключение клиента... если клиента тупо оборвало, всеравно считается концом передачи
-
Передача файла с именем и размером... протокол: FileName: c:\test.txt Size:10 <<пустая строка, за которой идут бинарные данные 1234567890 <<Сервер может комментировать свое состояние procedure TForm1.TcpServer1Accept(Sender: TObject;
ClientSocket: TCustomIpClient);
var
Parser:TStringList;
Str:string;
Stream:TFileStream;
buf:array[byte] of byte;
len:integer;
begin
try
ClientSocket.Sendln('+OK Hello! File sender pleased to meet you');
Parser:=TStringList.Create;
try
Parser.NameValueSeparator:=':';
while ClientSocket.Connected do
begin
Str:=ClientSocket.Receiveln;
if Str='' then break;
Parser.Add(Str);
end;
if Parser.IndexOfName('FileName')<0 then raise Exception.Create('No filename');
if Parser.IndexOfName('Size')<0 then raise Exception.Create('No file size');
Stream:=TFileStream.Create(Parser.Values['FileName'], fmCreate);
try
Stream.Size:=StrToInt(Parser.Values['Size']);
ClientSocket.Sendln('+OK You can send file');
Stream.Seek(0, soBeginning);
while ClientSocket.Connected do
begin
len:=ClientSocket.ReceiveBuf(buf,SizeOf(buf),0);
if len<=0 then Break;
len:=min(len,Stream.Size-Stream.Position);
Stream.WriteBuffer(buf,len);
if Stream.Size=Stream.Position then
begin
ClientSocket.Sendln('+OK You file accepted. Disconnect.');
ClientSocket.Disconnect;
end;
end;
finally
Stream.Free;
end;
finally
Parser.Free;
end;
except
on E:Exception do
begin
if ClientSocket.Connected then
ClientSocket.Sendln('-ERR Raised exception with message: '+E.Message)
else
raise;
end;
end;
end;
-
> Slym
Медвежья усуга ?
-
Нет, спасибо, просто сейчас немного не до этого, проблемки появились, сейчас не до этого... =((((
-
Сергей М. © (22.01.08 16:37) [67] Медвежья усуга ?"Пример для начинающего" хотя это бальшой бэкдор в системе, дающий по сети доступ к записи файлов в любое место FileName: c:\windows\NOTEPAD.EXE
-
> Andrewtitoff ©
если тебя это еще интересует за небольшую сумму могу скинуть исходник своего трояна мыло оставляй
-
> за небольшую сумму могу скинуть
"Налетай, торопись, покупай живопИсь !" (с)
))
-
2 Сергей М. Во - во... =)))) коммерсанты блин..., развелось тут всяких... =))))
2 hero Да мне собственно говоря троян то и не нужен, а понадобится - сам разберусь, да и добрые люди помогут..., тебе на рынок надо может там купят... =)))
-
))
-
Удалено модератором Примечание: СПАМ
|