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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2010, 02:58   #1
idrees
 
Регистрация: 10.12.2010
Сообщений: 4
Вопрос Передача и прием '*.jpg'; !????

Здрасти))
Простите если не там пишу;
Ребят вопрос такой... передача и прием проходят гладко... НО
Передача картинки на сервер идет каждые 2 секунды...
сервер отлично справляется принимает и перезаписывает картинку.. и опять же НО...
Картинка после 2-го до N приема получается как на приложенной картинке.
Что не так делаю? Если нужно засвечу код.
Изображения
Тип файла: jpg scr.jpg (356.4 Кб, 130 просмотров)
idrees вне форума Ответить с цитированием
Старый 12.12.2010, 03:18   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

фотографируете в окно?
это эффект зеркал.
вам не нужна форма чтоб копировать.

по логике сами по судите
в голове пройдите шаги копирования экрана.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.12.2010, 03:42   #3
idrees
 
Регистрация: 10.12.2010
Сообщений: 4
Восклицание

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
фотографируете в окно?
это эффект зеркал.
вам не нужна форма чтоб копировать.

по логике сами по судите
в голове пройдите шаги копирования экрана.
Отпишу все шаги которые выполняются:
1.Клиент фотает экран каждые 2 сек. при этом сохраняя фотку и заменяя одноименную.
2.Отправляет на сервер.
3.сервер принимает, сохраняет и показывает в TImage каждые 2.5 сек.
вот и все.
Только вот никак не могу понять почему выходит такая байда(( что-то голова сосем не прет(((
idrees вне форума Ответить с цитированием
Старый 12.12.2010, 04:12   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а клиент показывает её на экране?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.12.2010, 04:46   #5
idrees
 
Регистрация: 10.12.2010
Сообщений: 4
Восклицание

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а клиент показывает её на экране?
Клиент не показывает. только отсылает сохраненный скрин.
Чет я вас совсем запутал)))
Вот лист. Клиента - именуется у меня как сервер
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, XPMan, StdCtrls, ScktComp, Buttons, ExtCtrls, jpeg, Menus,
  ComCtrls, ToolWin,inifiles;

type
  TForm1 = class(TForm)
    ClientSocket1: TClientSocket;
    XPManifest1: TXPManifest;
    Label1: TLabel;
    Timer1: TTimer;
    Image1: TImage;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    StatusBar1: TStatusBar;
    Panel1: TPanel;
    Edit1: TEdit;
    Button1: TButton;
    Timer2: TTimer;
    Button2: TButton;
    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ClientSocket1Connecting(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ClientSocket1Disconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
      ErrorEvent: TErrorEvent; var ErrorCode: Integer);
    procedure Timer2Timer(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
    fs:TFileStream;
    Reciving:Boolean;
    DataSize:Integer;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
var
s,sl:string;
begin

s:=Socket.ReceiveText;
if reciving then
begin
fs.Write(s[1],length(s));
if fs.size=datasize then
begin
fs.free;
Reciving:=false;
end;
exit;
End;
if copy(s,1,5)='Size:' then
begin
sl:=copy(s,6,pos(#0,s)-6);
DataSize:=StrToInt(sl);
Delete(s,1,pos(#0,s));
Reciving:=true;
fs:=TFileStream.create('scr.jpg',fmCreate);
fs.write(s[1],length(s));

End;
end;

procedure TForm1.N1Click(Sender: TObject);
begin
ClientSocket1.Host:=Edit1.Text;
ClientSocket1.Port:=1112;
ClientSocket1.Active:=true;
end;

procedure TForm1.N2Click(Sender: TObject);
begin
ClientSocket1.Active:=false;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
if StatusBar1.Panels.Items[0].Text='Ïîäêëþ÷èëèñü!' then
Image1.Picture.LoadFromFile('scr.jpg');
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
DeleteFile('scr.jpg');
ClientSocket1.Socket.SendText('s');
end;

end.
Вот лист. серера - иминуемого у меня как клиент.
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    Edit1: TEdit;
    ServerSocket1: TServerSocket;
    Button2: TButton;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Edit1.Text:=OpenDialog1.FileName;
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
  var
  fs:TFileStream;
  data:TMemoryStream;
begin
if Socket.ReceiveText='s' then
begin
fs:=TFileStream.Create(Edit1.Text,fmOpenRead);
Try
fs.Position:=0;
Socket.SendText('Size:'+IntToStr(fs.Size)+#0);
Socket.SendStream(fs);
finally
end;end;end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
DC : HDC;
bmp : TBitmap;
jpgImg: TJPEGImage;
begin
bmp := TBitmap.Create;
jpgImg := TJPEGImage.Create;
bmp.Height := Screen.Height;
bmp.Width := Screen.Width;
DC := GetDC(0);
bitblt(bmp.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, DC, 0, 0, SRCCOPY);
ReleaseDC(0, DC);
jpgImg.Assign(bmp);
jpgImg.CompressionQuality:=100;
jpgImg.SaveToFile('Scr.jpg');
jpgImg.Free;
bmp.Free;
end;

Последний раз редактировалось Stilet; 12.12.2010 в 12:54.
idrees вне форума Ответить с цитированием
Старый 12.12.2010, 05:27   #6
idrees
 
Регистрация: 10.12.2010
Сообщений: 4
По умолчанию

Кажется понял фишку))
Во тупил-то)) Спасиб за подсказку про зеркала))
idrees вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прием и передача данных в PCI_E устройство Andrei4 Помощь студентам 2 12.11.2010 18:33
прием передача сообщения от сервера клиенту и на оборот Lokos Работа с сетью в Delphi 4 24.08.2010 18:24
Прием и передача байт и бит через COM-порт от 16 разрядного МК Miyka Win Api 6 11.06.2010 00:42
TServerSocket и TClientSocket передача и прием файла Vovandows Работа с сетью в Delphi 2 24.09.2008 09:23