![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передача файла с помощью TTCPServer, TTCPClient...
3APA3A © (2004-03-03 22:13:00)файлы, маскимальный размер ~10Мб, локалка на 100мб..
Я делал так - при надатиин на кнопку писал
var F:TFileStream;
S:DWORD;
Client.RemoteHost:='...';
Client.RemotePort:='...';
F:=TFileStream.Create('c:\....',fmOpenRead);
if Client.Connect then
begin
s:=DWORD(F.Size);
Client.SendBuf(S,4);
Client.SendStream(F);
Client.Disconnect;
end
а в обработчике OnAccept сервера
M:TMemoryStream;
S:DWORD;
begin
M:=TMemoryStream.Create;
ClientSocket.ReceiveBuff(S,4);
M.SetSize(S);
ClientSocket.ReceiveBuff(M.Memory^,S);
M.SaveToFile('c:\....');
M.Free;
end;
Писал по памяти, может что-то и упустил, но у меня почему то создается файл всегда 4Кб, хотя размер передается правильно... проверял... В чем я ошибся?
Verg (2004-03-04 06:32:00) [1]ReceiveBuf возврщает реально принятое количество байт, которое может быть меньше, чем то что ты указал во вотором параметре.
А ты этого не учитываешь вообще.
Интересно еще вот что - как ты это проверил, что размер передается верно?
Slym (2004-03-04 04:19:00) [2]Попробуй применить OnGetThread...
И в дельфи есть примеры!