Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.30;
Скачать: CL | DM;

Вниз

посылка файла   Найти похожие ветки 

 
эксперт   (2006-04-12 20:01) [0]

Здраствуйте, я использую компоненты для сервера(TServerSocket) и для клиента(TClientSocket), мне нужно послать файл большого объема(например, фильм), но не потоком, а отдельными фиксрованными частями(по 3 МБ) и чтоб пакет посылался раз в секунду. Вы не подскажите как это реализовать? Как мне разбить этот файл? т.е. я создаю пакет:
type
TInform_packet = packed record
num_message: Cardinal;
time_message: Cardinal;
count_message: Cardinal;
dan_message: array [0..3000000] of Byte;
md5_message: Cardinal;
end;

и как мне задать что в dan_message этот файл, и как его разбить, если можно по-другому эту задачу решить, подскажите пожалуйста...


 
Yegorchic ©   (2006-04-12 20:16) [1]


>  частями(по 3 МБ)

...
> dan_message: array [0..3000000] of Byte;


Это не 3 Мб. 3 mb = 3145728 bytes, вроде.

Для записи можно использовать BlockRead() + F1;
Только вот по 3 МБ отсылать, я думаю, не получится...


 
новичок111   (2006-04-12 20:29) [2]

почему не получится, сеть 1 Gb, все получится...
вот так выглядить будет: BlockRead(C:\дневной дозор.avi,dan_message,3145728)?


 
Yegorchic ©   (2006-04-12 20:43) [3]

Вроде да. Только путь то в кавычках, естественно.


 
Delphi_is_cool ©   (2006-04-12 21:09) [4]

Для копирования файлов лучше использовать функцию WinSock.TransmitFile.


 
эксперт   (2006-04-13 21:29) [5]

так и не смог разобраться с BlockRead, помогите пожалуйста...
Вот кусок кода:

type
TInform_packet = packed record
num_message: Cardinal;
time_message: Cardinal;
count_message: Cardinal;
dan_message: array [0..3885000] of Byte;
md5_message: Cardinal;
end;
procedure packet;
var
 Client1: TClient1;
 pack: TInform_packet;
 F: File;
implementation

{$R *.dfm}
procedure packet;
begin
BlockRead(F,pack.dan_message,sizeof(pack.dan_message));
end;

procedure TClient1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
 begin
  Edit1.Text:=OpenDialog1.FileName;
  AssignFile(F,OpenDialog1.FileName);
 end;
end;

procedure TClient1.ClientSocket1Connect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
packet();
Socket.SendBuf(pack,sizeof(pack));
end;

end.
Подскажите что я неправильно делаю... А WinSock для меня вообще лес густой...



Страницы: 1 вся ветка

Текущий архив: 2006.04.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.045 c
6-1137064976
Dark Lord
2006-01-12 14:22
2006.04.30
Проблема с динамическим WebBrowser


1-1143203538
.Кирилл
2006-03-24 15:32
2006.04.30
Как записать в бинарный файл данные String


4-1139470430
Хинт
2006-02-09 10:33
2006.04.30
Список библиотек, загруженных чужим процессом


15-1143822489
Volf_555
2006-03-31 20:28
2006.04.30
Проблема открытия локального сайта с подключенным интернетом


15-1144250697
TUser
2006-04-05 19:24
2006.04.30
Короткие имена папок