-
denissoft (17.09.08 19:11) [0]Как переслать огромный файл по ТСП/ИП от 100 Мб- 4 Гб.
Использую обычный ClientSocket и ServerSocket? Какое ограничение по размеру буфера для Win-сокета? -
Anatoly Podgoretsky © (17.09.08 19:41) [1]> denissoft (17.09.2008 19:11:00) [0]
Это не огромный файл, и не отличается от 1 мб файла, кроме времени на пересылку. -
Сергей М. © (17.09.08 20:25) [2]Обычным образом.
Пересылка двух байт ничем не отличается от пересылки двух терабайт.
> Какое ограничение по размеру буфера для Win-сокета?
Любое в пределах допустимого операционной системой. -
tesseract © (17.09.08 21:07) [3]
> Пересылка двух байт ничем не отличается от пересылки двух
> терабайт.
для терабайта я бы асинхронку рекомендовал. Соотвественно, там служебные данные появяться. -
Сергей М. © (18.09.08 12:20) [4]
> там служебные данные появяться.
Это какие же ?
И почему "служебные данные" нужны лишь при больших по объему тренслируемых данных ? -
Anatoly Podgoretsky © (19.09.08 09:21) [5]> tesseract (17.09.2008 21:07:03) [3]
До терабайта еще дожить надо и обеспечить должную среду. -
denissoft (19.09.08 19:14) [6]какаета муть я пишу (см ниже) файл доходит но не до конца даже если размер примерно 5 Мб.
на стороне сервераvar
Form1: TForm1;
fs:TFileStream;
fileopen:boolean =false;
msg:boolean;
implementation
{$R *.dfm}
Function SendCommand(text:string):boolean;
begin
form1.ServerSocket1.Socket.SendText('>'+text+'#');
msg:=false;
repeat
application.ProcessMessages;
until msg;
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
label loop;
var rec,comand:string;
endfile:boolean;
begin
rec:=socket.ReceiveText;
loop:
if rec<>'' then begin
if Fileopen then begin
endfile:=false;
if pos('>endfile#',rec)>0 then begin
delete(rec,pos('>endfile#',rec),length('>endfile#'));
endfile:=true;
end;
if rec<>'' then
fs.Write(rec[1],length(rec));
if endfile then begin
rec:='>endfile#';
Fileopen:=false;
end;
end;
if not Fileopen then
if copy(rec,1,1) ='>' then begin
comand:=copy(rec,2,pos('#',rec)-2);
delete(rec,1,pos('#',rec));
form1.ListBox1.Items.Add('ïðèøëà êîìàíäà '+comand);
if comand<>'msg' then socket.SendText('>msg#'); // åñëè ïðèøëî ñîîáùåíèå îòëè÷íîå îò ñëóæåáíîãî òî ïîñûëàåì ñëóæåáíîå ñîîáùåíèå
if comand = 'file' then begin
fs:=TFileStream.Create('c:\1.exe', fmCreate);
Fileopen:=true;
end;
if comand = 'endfile' then begin
closehandle(fs.Handle);
Fileopen:=false;
end;
if rec<>'' then goto loop;
end;
end;
end;
на стороне клиентаvar
Form1: TForm1;
msg:boolean;
implementation
{$R *.dfm}
Function SendCommand(text:string):boolean;
begin
form1.ClientSocket1.Socket.SendText('>'+text+'#');
msg:=false;
repeat
application.ProcessMessages;
until msg;
end;
procedure TForm1.Button1Click(Sender: TObject);
var p:array [1..4096] of byte;
begin
SendCommand('file');
with TFileStream.Create('c:\temp\idw411.1.exe', fmOpenRead) do
begin
repeat
Read(p,4096);
form1.ClientSocket1.Socket.SendBuf(p,4096);
form1.ListBox1.Items.Add(inttostr(sizeof(p)));
until Position>=Size;
free;
end;
sleep(1000);
SendCommand('endfile');
end;
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var x:integer;
rec:string;
begin
rec:=socket.ReceiveText;
if pos('>msg#',rec)>0 then msg:=true;
if rec<>'>msg#' then socket.SendText('>msg#');
end; -
Сергей М. © (19.09.08 19:28) [7]
> какаета муть я пишу
Да, ты пишешь какаета муть.
Пиши не какаетамуть, а только то что касается именно передачи файла.
И не лепи сюда же прочую шнягу. -
denissoft (19.09.08 19:36) [8]если написать sleep(1000); между отправками то вроде файл качается но слишком медленно как быть?
-
Сергей М. © (19.09.08 19:42) [9]1. Использовать SendStream
2. Использовать OnWrite.
В любом случае - читать документацию и не нести отсебячину. -
denissoft (19.09.08 19:45) [10]в SendStream можно загрузить файл в 2 Гб?
-
Сергей М. © (19.09.08 19:47) [11]
> idw411.1
Мало того что дерьмовый софт пересылается, да еще и дерьмовым софтом дерьмовый софт пересылается) -
Сергей М. © (19.09.08 19:51) [12]
> в SendStream можно загрузить файл в 2 Гб?
Нельзя.
Это же не контейнер, чтобы в него "грузить" что-то там)
А где ты видел дистр-в "Налогоплательщика ЮЛ" размером 2 гб ?) -
denissoft (19.09.08 19:53) [13]Налогоплательщика ЮЛ для примера
-
Сергей М. © (19.09.08 19:57) [14]Бедны-бедные булгактеры)
-
Anatoly Podgoretsky © (19.09.08 21:39) [15]> Сергей М. (19.09.2008 19:57:14) [14]
Тебе бухгалтеров жалко, а мне фирму. -
Сергей М. © (19.09.08 21:59) [16]
> Anatoly Podgoretsky © (19.09.08 21:39) [15]
Ихнюю ?
Ну да, и мне тоже -
denissoft (22.09.08 18:56) [17]Ихнюю ?
Ну да, и мне тоже...
> да господа далеко пойдете... -
Сергей М. © (22.09.08 18:59) [18]
> denissoft (22.09.08 18:56) [17]
Вы о чем, любезный ?) -
Palladin © (23.09.08 13:32) [19]Это он вас завуалированно послал )