Текущий архив: 2004.10.24;
Скачать: CL | DM;
ВнизЕще раз о пересылке файлов Найти похожие ветки
← →
PL (2004-08-19 10:59) [0]Уважаемые мастера.
Кто-нибудь знает способ пересылки файла по сети с одного компа на другой без клиентсокета/серверсокета? Дело в том, что при попытке посылать файл потоком (Socket.sendStream()) Постоянно вываливается ошибка, что хост разорвал установленное соединение, хотя текст передается нормально. Вот я и хотел спросить, есть ли альтернативные способы слать файл (буфером я уже пробовал - та же фигня)
← →
R2D2 (2004-08-19 11:09) [1]А Socket.sendfile() пробовал?
← →
Digitman © (2004-08-19 11:18) [2]
> Постоянно вываливается ошибка, что хост разорвал установленное
> соединение, хотя текст передается нормально
что ты считаешь признаком "нормальности передачи" ?
если "вываливается" такая ошибка, то пенять нужно на ошибки в твоем собственном алгоритме, а не на ошибки в упомянутых компонентах
← →
PL (2004-08-19 12:09) [3]Алгоритмы были взяты их статьи на этом сайте "Программирование серверов на основе сокетов в Дельфи
"
{Прием файла через сокет}
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var l: Integer;
buf: PChar;
src: TFileStream;
begin
{Записываем в l размер полученного блока}
l := Socket.ReceiveLength;
{Заказываем память для буфера}
GetMem(buf,l+1);
{Записываем в буфер полученный блок}
Socket.ReceiveBuf(buf,l);
{Открываем временный файл для записи}
src := TFileStream.Create("myfile.tmp",fmOpenReadWrite);
{Ставим позицию в конец файла}
src.Seek(0,soFromEnd);
{Записываем буфер в файл}
src.WriteBuffer(buf,l);
{Закрываем файл}
src.Free;
{Освобождаем память}
FreeMem(buf);
end;
{Посылка файла через сокет}
procedure SendFileBySocket(filename: string);
var srcfile: TFileStream;
begin
{Открываем файл filename}
srcfile := TFileStream.Create(filename,fmOpenRead);
{Посылаем его первому подключенному клиенту}
ServerSocket1.Socket.Connections[0].SendStream(srcfile);
{Закрываем файл}
srcfile.Free;
end;
НУ НЕ ХОТЯТ ОНИ РАБОТАТЬ:(
← →
Digitman © (2004-08-19 12:14) [4]
> НУ НЕ ХОТЯТ ОНИ РАБОТАТЬ
и не будут
потому что :
1. код этот с грубыми ошибками
2. ты палец о палец не ударил, чтобы проанализировать код, оттрассировать его пошагово в режиме отладки и найти ошибки
← →
PL (2004-08-19 12:29) [5]Ну кто ж знал, что статьи по Delphi от "Мастеров" содержат код с "Грубыми ошибками"
Я даже не знаю, что такое трассировать пошагово в режиме отладки. Просто реализовать это нужно срочно (до сегодняшнего вечера), а времени искать способы и изучать особенности нету (кто курсовые делал, тот поймет). Поэтому я и надеялся на помощь тут. Зря.
← →
Digitman © (2004-08-19 13:01) [6]
> PL (19.08.04 12:29) [5]
> кто ж знал, что статьи по Delphi от "Мастеров" содержат
> код с "Грубыми ошибками"
сожалею.
статьи от Н.Кариха давно пора выкорчевать с сайта
> не знаю, что такое трассировать пошагово в режиме отладки
учебники и стандартная справочная инф-ция Делфи уже упразднены ?
> реализовать это нужно срочно (до сегодняшнего вечера),
если ты взялся за явно непосильную тебе на сей момент задачу - прими соболезнования ... ибо нет и не было простых задач, не требующих хоть каких-либо знаний
> кто курсовые делал, тот поймет
какие нафих курсовые ?! каникулы же !)
> времени искать способы и изучать особенности нет
нечего было балдеть все два семестра - следовало учиться
единственное чем сейчас могу реально помочь - поставь buf^ вместо buf в вызовах ф-ций TCustomWinSocket.ReceiveBuf и TStream.WriteBuffer
← →
PL (2004-08-19 18:38) [7]2 Digitman
Слушай, чего ты злой такой? Написал бы "Ничем не могу помочь". А то рычишь на всех, а пользы... Я тож могу всем отвечать "RTFM", но разве форум для этого...
Страницы: 1 вся ветка
Текущий архив: 2004.10.24;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.033 c