Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
serjAk1337
1 / 1 / 0
Регистрация: 29.03.2017
Сообщений: 52
1

Indy чат(Отправка изображения)

01.05.2017, 13:08. Просмотров 207. Ответов 0
Метки нет (Все метки)

Возник вопрос, можно ли как то передать картинку с клиента на сервер. Что бы ее видели все. ?
Кто то реализовывал подобное?
Есть у кого пример кода на Indy?

Добавлено через 5 часов 27 минут
Нашел пример открытого кода, типо удаленный просмотр экрана, решил его использовать и и переделать под себя. Но на этапе изменения кода, ошибок не вылазило, а при подключении клиента к серверу, сервер зависает. В чем проблема? Просто я нашел пример как с Сервера передавать картинку на клиент. А мне нужно С клиента на сервер кидать. Помогите изменить код(Отправить изображение, какое я сам сделал укажу) Просто Изменить код.
Вот код который я нашел.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ExtCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, StdCtrls, sSkinManager;
 
type
  TForm1 = class(TForm)
    IdTCPClient1: TIdTCPClient;
    img1: TImage;
    mm1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    tmr1: TTimer;
    grp1: TGroupBox;
    btn1: TButton;
    edt1: TEdit;
    lbl1: TLabel;
    lbl2: TLabel;
    edt2: TEdit;
    lbl3: TLabel;
    edt3: TEdit;
    btn2: TButton;
    sknmngr1: TsSkinManager;
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
    procedure tmr1Timer(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure IdTCPClient1Disconnected(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.btn1Click(Sender: TObject);
begin
IdTCPClient1.Host:=edt1.Text;  // ип адрес
IdTCPClient1.Connect;
tmr1.Enabled:=True;
end;
 
procedure TForm1.btn2Click(Sender: TObject);
begin
tmr1.Interval:=StrToInt(edt3.Text);
end;
 
procedure TForm1.tmr1Timer(Sender: TObject);
var
  st:TMemoryStream;
begin
 IdTCPClient1.WriteLn('jpg');
 st:=TMemoryStream.Create;
 IdTCPClient1.ReadStream(st);
 st.Position:=0;
 img1.Picture.Bitmap.LoadFromStream(st);
 st.Clear;
 st.Free;
end;
 
 
end.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPServer, IdIdentServer;
 
type
  TForm1 = class(TForm)
    IdTCPServer1: TIdTCPServer;
    IdIdentServer1: TIdIdentServer;
    procedure IdTCPServer1Execute(AThread: TIdPeerThread);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure jpg (connection: TIdTCPServerConnection);
var
 steam:TMemoryStream;
 desktopconvas : Tcanvas;
 Bitmap: TBitmap;
 begin
   desktopconvas:=TCanvas.Create;
   desktopconvas.Handle:=GetDC(HWND_DESKTOP);
   Bitmap:=TBitmap.Create;
   Bitmap.Width:=Screen.Width;
   Bitmap.Height:=screen.height;
   Bitmap.Canvas.CopyRect(Bitmap.Canvas.ClipRect, desktopconvas, desktopconvas.ClipRect);
   if not DrawIcon(Bitmap.Canvas.Handle,Mouse.CursorPos.X, Mouse.CursorPos.Y, GetCursor) then
   begin
     steam:=TMemoryStream.Create;
     Bitmap.SaveToStream(steam);
     connection.WriteStream(steam, True, True);
     steam.Clear;
     steam.Free;
     Bitmap.free;
   end;
 end;  
 
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var a:string;
begin
  a:=AThread.Connection.ReadLn;
  if a='jpg' then
  begin
    jpg(AThread.Connection);
  end;
 
end;
Код сделан для отправки картинки экрана с Сервера на Клиент
Нужно изменить код, что бы картинка, не важно что это скрины, передавалась с Клиента на сервер.

Добавлено через 1 час 51 минуту
Нашел код.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.Button1Click(Sender: TObject);
var F: TFileStream;
     i: integer;
begin
  for i:=0 to memo1.Lines.Count-1 do
  begin
      IdTCPClient.Connect;
      IdTCPClient.WriteLn(memo2.Lines.Strings[i]);                        // путь в архиве
      F:= TFileStream.Create(memo1.Lines.Strings[i],fmOpenRead);  // что передать (файл клиента)
      IdTCPClient.OpenWriteBuffer;
      IdTCPClient.WriteStream(F);
      IdTCPClient.CloseWriteBuffer;
      F.Free;
      IdTCPClient.Disconnect;
  end;
end;
Почему у меня delphi не понимает IdTCPClient.WriteStream, а именно WriteStream?

Добавлено через 45 минут
IdTCPClient1.IOHandler.Write Можно я так понимаю так, но картинка не приходит
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2017, 13:08
Ответы с готовыми решениями:

Кодировка. Indy. Чат
при отправке сообщения серверу русскими буквами, появляются знаки вопроса. ...

Повторное соединение. Indy Компоненты. Чат
Если сервер не активен, при запуске клиента, вылазит ошибка 'Socket error:...

Не могу наладить чат [Indy 10, Delphi XE3]
Решил освоить Инди и вот первый мой проект. Суть чата в том, что у нас есть...

Отправка сообщения в конкретный чат Skype
Добрый вечер! Прошу помощи. Не могу добиться, чтобы заработал код: отправить...

Indy 8 и Indy 10. Старая и новая версия
Есть строчки var c: char; myFile: file; HasChild: bool; ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2017, 13:08

Indy
начал читать книгу "Книга Indy in Depth. Глубины Indy" там пример with...

Indy 10
После обновления Indy на 10 в Delphi 7 появилась ошибка в компанентах -...

indy 10
Поставил indy 10,так как был необходим модyль IdAttachmentFile,но как оказалось...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru