Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.07.2008, 12:51   #1
Elandar
 
Регистрация: 24.07.2008
Сообщений: 4
Вопрос Сного про файлы

На клиенте при получениие сообщения "Файл" вызывается процедура


procedure TForm1.SendFile;
var
srcfile: TFileStream;
begin
srcfile := TFileStream.Create('C:\1.txt',fmOpe nRead);

//ServerSocket1.Socket.Connections[0].SendText(IntToStr(srcfile.Size) + #0);
ServerSocket1.Socket.Connections[0].SendStream(srcfile);
srcfile.Free;

end;

Дальше вызывается процедура OnRead у клиента:

procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
l: Integer;
buf: PChar;
src: TFileStream;
begin
l := Socket.ReceiveLength - 1;
GetMem(buf,l+1);
Socket.ReceiveBuf(buf,l);
src := TFileStream.Create('E:\1.txt',fmOpe nReadWrite);// это куда файл сохраняется после пердачи?
src.Seek(0,soFromEnd);
src.WriteBuffer(buf,l);
src.Free;
FreeMem(buf);
end;

Выскакивает ошибка Access violation of adres 004021CE in module {наз проги сервера} Write of adress 0000001A
Elandar вне форума Ответить с цитированием
Старый 25.07.2008, 12:51   #2
Elandar
 
Регистрация: 24.07.2008
Сообщений: 4
По умолчанию

Здесь мы рассмотрим посылку файлов через сокет. Итак, как же послать файл по сокету? Очень просто! Достаточно лишь открыть этот файл как файловый поток (TFileStream) и отправить его через сокет (SendStream)! Рассмотрим это на примере:



{Посылка файла через сокет}
procedure SendFileBySocket(filename: string);
var
srcfile: TFileStream;
begin
{Открываем файл filename}
srcfile := TFileStream.Create(filename,fmOpenR ead);
{Посылаем его первому подключенному клиенту}
ServerSocket1.Socket.Connections[0].SendStream(srcfile);
{Закрываем файл}
srcfile.Free;
end;


Нужно заметить, что метод SendStream используется не только сервером, но и клиентом (ClientSocket1.Socket.SendStream(sr cfile))

Этот способ мне понравился, но как обработать прием файла с указанием пути созранения?

Последний раз редактировалось Elandar; 25.07.2008 в 12:58.
Elandar вне форума Ответить с цитированием
Старый 25.07.2008, 21:20   #3
Elandar
 
Регистрация: 24.07.2008
Сообщений: 4
По умолчанию

Расскажите пожалуйста как сохранить полученный файл в определенное место

Последний раз редактировалось Elandar; 26.07.2008 в 00:11.
Elandar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Файлы. BR@BUS Помощь студентам 5 09.04.2008 19:35
Файлы Logan Паскаль, Turbo Pascal, PascalABC.NET 6 01.04.2008 10:15
INI файлы aesoem Общие вопросы Delphi 3 24.12.2007 21:22
два вредных вопроса:про асю и прикриплёные файлы файлы steck Свободное общение 3 17.06.2007 14:53