![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
посылка файла [D7, 2000, XP]
эксперт © (2006-04-12 20:01:00)Здраствуйте, я использую компоненты для сервера(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 этот файл, и как его разбить, если можно по-другому эту задачу решить, подскажите пожалуйста...
эксперт (2006-04-13 21:29:00) [1]так и не смог разобраться с BlockRead, помогите пожалуйста...
Вот кусок кода:
Подскажите что я неправильно делаю... А WinSock для меня вообще лес густой...
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.
Delphi_is_cool (2006-04-12 21:09:00) [2]Для копирования файлов лучше использовать функцию WinSock.TransmitFile.
Yegorchic (2006-04-12 20:43:00) [3]Вроде да. Только путь то в кавычках, естественно.
новичок111 (2006-04-12 20:29:00) [4]почему не получится, сеть 1 Gb, все получится...
вот так выглядить будет: BlockRead(C:\дневной дозор.avi,dan_message,3145728)?
Yegorchic (2006-04-12 20:16:00) [5]
> частями(по 3 МБ)
...
> dan_message: array [0..3000000] of Byte;
Это не 3 Мб. 3 mb = 3145728 bytes, вроде.
Для записи можно использовать BlockRead() + F1;
Только вот по 3 МБ отсылать, я думаю, не получится...