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

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

01.05.2017, 13:08. Просмотров 179. Ответов 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 чат(Отправка изображения) (Delphi):

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

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

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

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

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

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

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

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

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

Indy
Здравствуйте. Подскажите новичку, установил Делфи Берлин. Версия полная, но...

кодировка Indy
Привет, форумчане. Понимаю, что тема довольно избитая и разжёванная, но...


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

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

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