Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Мастера DELPHI. Новости мира компонент, FAQ, статьи...


Информационный Канал Subscribe.Ru

Ежедневная рассылка сайта Мастера DELPHI

DELPHIMASTER.ru

Выпуск от 15.07.04 09:18

Лучшее из нашего FAQ   |x|
Простой способ отправки файлов при помощи TClientSocket & TServerSocket

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 ScktComp, ExtCtrls, StdCtrls;

type
 TForm1 = class(TForm)
   Image1: TImage;
   Image2: TImage;
   ClientSocket1: TClientSocket;
   ServerSocket1: TServerSocket;
   Button1: TButton;
   procedure Image1Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure ClientSocket1Connect(Sender: TObject;
     Socket: TCustomWinSocket);
   procedure ServerSocket1ClientRead(Sender: TObject;
     Socket: TCustomWinSocket);
   procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
 private
   { Private decla rations }
   Reciving: boolean;
   DataSize: integer;
   Data: TMemoryStream;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Image1Click(Sender: TObject);
begin
 // Это процедура для открытия сокета на ПРИЁМ (RECEIVING).
 // Button1.Click is this procedure as well.
 ClientSocket1.Active:= true;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 // Открытие ОТПРАВЛЯЮЩЕГО (SENDING) сокета.
 ServerSocket1.Active:= true;
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
 // Посылаем команду для начала передачи файла.
&nb sp;Socket.SendText('send');
end;

proce! dure TForm1.ClientSocket1Read(Sender: TObject;
 Socket: TCustomWinSocket);
var
 s, sl: string;
begin
 s:= Socket.ReceiveText;
 // Если мы не в режиме приёма:
 if not Reciving then
 begin
   // Теперь нам необходимо получить длину потока данных.
   SetLength(sl, StrLen(PChar(s))+1); // +1 for the null terminator
   StrLCopy(@sl[1], PChar(s), Length(sl)-1);
   DataSize:= StrToInt(sl);
   Data:= TMemoryStream.Create;
   // Удаляем информацию о размере из данных.
   Delete(s, 1, Length(sl));
   Reciving:= true;
 end;
 // Сохраняем данные в файл, до тех пор, пока не получим все данные.
 try
   Data.Write(s[1], length(s));
   if Data.Size = DataSize then
   begin
     Data.Position:= 0;
     Image2.Picture.Bitmap.LoadFromStream(Data);
     Data.Free;
     Reciving:= false;
     Socket.Close;
   end;
 except
   Data.Free;
 end;
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
 Socket: TCustomWinSocket);
var
 ms: TMemoryStream;
begin
 // Клиент получает команду на передачу файла.
 if Socket.ReceiveText = 'send' then
 begin
   ms:= TMemoryStream.Create;
   try
     // Получаем данные на передачу.
     Image1.Picture.Bitmap.SaveToStream(ms);
     ms.Position:= 0;
     // Добавляем д лину данных, чтобы клиент знал, сколько данных будет передан! о
     // Добавляем #0 , чтобы можно было определить, где заканчивается информация о размере.
     Socket.SendText(IntToStr(ms.Size) + #0);
     // Посылаем его.
     Socket.SendStream(ms);
   except
     // Итак, осталось освободить поток, если что-то не так.
     ms.Free;
   end;
 end;
end;

end.

Автор М.К.

»»» Прислать свои комментарии

Обсуждается в конференциях   |x|
У нас большой выбор статей   |x|
Массив из элементов - как с ним бороться или как с ним дружить
Рассматриваются вопросы, связанные с использованием массивов компонентов
Новинки книжного рынка   |x|
Изучаем Photoshop
Эта книга для тех, кто хотел бы научиться работать в Photoshop – лучшей программе для обработки растровых изображений. В ней рассказывается не только об инструментах, палитрах и фильтрах программы, но и о том, как на практике использовать тот или иной инструмент, правильно применять фильтры, пользоваться цветом. Книга построена на живых примерах. Постепенно осваивая их, легко научиться основам работы с графическими изображениями. А накопленный опыт поможет в дальнейшем и создавать собственные композиции, и обрабатывать фотографии и подготавливать фотоматериалы для веб-странички. Photoshop – это просто, надо только немного терпения, чуточку художественного воображения и толкового помощника, каким без сомнения станет для вас эта книга.
Автор: Луций С. А.
Опрос населения :)
Как вы нашли наш сайт?
»»» Поисковая система
»»» Рассылка
»»» Ссылка с другого сайта
»»» Через каталог сайтов
»»» Друг посоветовал
»»» Случайно
Для души

Хокку дня
матричный принтер стрекочет
пронзительно и отчаянно
он обречен

Афоризмы
Женский свитер должен так плотно обтягивать грудь, чтобы у мужчины перехватило дыхание (Некий мичиганский политик)

Фраза дня
Спасибо в кровать не положишь.

Дурацкие законы (информация предоставлена сайтом kurilka.com)
В Кентуки (США) женщинам запрещено ходить по шоссе в купальном костюме. Исключение- если ее сопровождают по крайней мере двое полицейских или если она вооружена палкой.
В городе Джаспер в Алабаме (США) муж не может колотить жену палкой, диаметр которого больше толщины его большого пальца на руке.

И на закуску коротенький анекдот
Вышла книга "Сборник польских нецензурных выражений". Составитель - Иван Сусанин.

Фотоприколы.
Начните день с хорошего настроения!
http://www.delphimaster.ru/cgi-bin/prikol.pl?id=55862426


На этом позвольте откланяться и пожелать вам удачного дня.
Искренне ваш, Алексей (merlin@delphimaster.ru)

Добро пожаловать на сайт -= Мастера DELPHI =- 

http://subscribe.ru/
E-mail: ask@subscribe.ru
Адрес подписки
Отписаться

В избранное