Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Отправка файлов через сокеты [D7]


Ivolg ©   (2007-11-26 17:41:00) 

Как можно отправить файл через стандартные сокеты Windows ?
Собственно делаю так:

Сервер:
uses
   WinSock;
....
var
    MS: TMemoryStream;
begin
   MS:=TMemoryStream.Create;
   MS.LoadFromFile('C:\1.jpg'); (Вес 300кб)
   MS.Position:=0;
   Send(server_sock, MS.Memory^, MS.Size, 0);
   MS.Free;
end;

Клиент:
var
    buf: string;
    MS: TMemoryStream;
begin
   MS:=TMemoryStream.Create;
   Recv(client_sock, buf, 307200, 0);
   MS.Write(buf, 307200);
   MS.SaveToFile('C:\2.jpg');
   MS.Free;
end;

После пересылки доходит только часть файла. Может есть другие варианты пересылки ?


Сергей М.   (2007-11-28 08:29:00) [1]


> Ivolg ©   (28.11.07 08:16) [4]


> Все есть


Если режим неблокирующий, то логика приема/передачи, реализованная тобой, неверна.


Ivolg   (2007-11-28 08:16:00) [2]

Сергей М. ©   (27.11.07 08:18) [3]

Все есть, я просто привел пример, как я отправляю и получаю данные.


Сергей М.   (2007-11-27 08:18:00) [3]


> делаю так


Это что, веськод ?
Где создание и инициализация гнезд ?


> Recv(client_sock, buf, 307200, 0);


Здесь грубейшаяошибка.


Ivolg   (2007-11-26 18:50:00) [4]

tesseract ©   (26.11.07 18:01) [1]

Над этой идеей я уже думал. Мне кажется, что это долговато будет, если файл большого объема, например 20мб.


tesseract   (2007-11-26 18:01:00) [5]


> Может есть другие варианты пересылки ?


Например блоками по 1 кбайту.


Наверх

Титульная страница Поиск, карта сайта Написать письмо