Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Передать картинку по сети


Автор: Rodman 20.9.2006, 15:59
Дароф. 

Дело такое... У меня есть клиент и сервер в инете написан на делфях... Возможно ли послать фотку от клиента к серверу и наоборот...

Т.е. один посылает, второй у себя сохраняет...

Спасибо... smile  smile  smile 

Автор: _hunter 20.9.2006, 16:03
Цитата(Rodman @  20.9.2006,  15:59 Найти цитируемый пост)
Возможно ли послать фотку от клиента к серверу и наоборот...

возможно.

за
Цитата(Rodman @  20.9.2006,  15:59 Найти цитируемый пост)
sample

-- фпоиск

Автор: Snowy 20.9.2006, 16:36
ссылки внизу страницы...

Автор: Rodman 20.9.2006, 18:38
все в основном типа Upload.. мне передача

Ну я смотрел кое что (в основном iddqd спрашивал), но там работа с сайтом... а у меня на серваке програ WebServices, которая принимать может.... 

Автор: Snowy 20.9.2006, 19:40
В основном...
Плохо смотрел.
Вот пример из FAQ: http://vingrad.ru/DELPHI-DLP-001358
Также в DRKB есть топ именно с таким названием.
А файл или картинка - не суть разница - картинка - частный случай файла.

Автор: Rodman 23.9.2006, 12:06
Да вот пример из DRKB получился
Код

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    ClientSocket1: TClientSocket;
    ServerSocket1: TServerSocket;
    BitBtn1: TBitBtn;
    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure ClientSocket1Disconnect(Sender: TObject; Socket: TCustomWinSocket);
    procedure ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket);
    procedure ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket);
    procedure BitBtn1Click(Sender: TObject);
  private
    FStream: TFileStream;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
var  
  iLen: Integer;  
  Bfr: Pointer;
begin
  iLen := Socket.ReceiveLength;  
  GetMem(Bfr, iLen);
  try  
    Socket.ReceiveBuf(Bfr^, iLen);  
    FStream.Write(Bfr^, iLen);
  finally  
    FreeMem(Bfr);  
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FStream := nil;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  if Assigned(FStream) then  
  begin  
    FStream.Free;
    FStream := nil;  
  end;
end;

procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  if Assigned(FStream) then  
  begin  
    FStream.Free;
    FStream := nil;  
  end; 
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  FStream := TFileStream.Create('C:\Temp\20MJW2.jpg', fmCreate or fmShareDenyWrite);
end;

procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Socket.SendStream(TFileStream.Create('C:\Temp\20MJW.jpg', fmOpenRead or fmShareDenyWrite));
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  ServerSocket1.Active := True;  
  ClientSocket1.Active := True;
end;

end.


но вот бочина в том, что пока приложение не закроешь... к файлу не подступиться...

Как определить момент окончания закачки и закрыть форму????



И второй вопрос...

У меня есть веб сервис, он не визуален... каким образом мне описать в нем процедуры... чтобы он мог принимать, а также отсылать??? 

Автор: Snowy 25.9.2006, 21:41
Цитата(Rodman @  23.9.2006,  12:06 Найти цитируемый пост)
Как определить момент окончания закачки
В данном примере событие ClientSocket1Disconnect
Сразу после уничтожения стрима можешь гасить форму.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)