Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Indy 10 TCP client -server пример работы, как осуществить обмен данными ? 
:(
    Опции темы
wagner
Дата 18.5.2005, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 18.5.2005

Репутация: нет
Всего: нет



Добрый день граждане !

Кто нибуть может объяснить как сделать простой клиент сервер с
помощью компонентов Indy 10.

Стандартный хелп не подходит (там описывается Athread, а в 10 Iindy метод заменили на Acontext)

Хочется понять как с этим работать вообще ... то есть если можно пример по подробнее smile
Для начала из разряда установки соединения и передачи приветствия от клиента к серверу,
а потом вариант с передачей данных (наприме числового массива)

C Уважением Wagner
PM MAIL   Вверх
RA
Дата 19.5.2005, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 10
Всего: 115



...\Delphi7\Demos\Indy\BasicClientServer
PM   Вверх
wagner
Дата 19.5.2005, 07:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 18.5.2005

Репутация: нет
Всего: нет



Текст единственного файла в данном каталоге:
Цитата

Delphi 7
Indy V9 Demos

===========================

Indy V9 Demos

Demo applications for Indy V9 are available from the
downloads section on the Indy site at:

http://www.nevrona.com/indy

As new demos are constantly being built and tested,
this is the most up to date location for demo
downloads.

If you have any problems with demos please join the
"Indy Demos" group at yahoo groups, and report them
there:

http://groups.yahoo.com/group/Indy-Demos/


На сайте перерыл все - ничего нет smile(
Если есть возможность приведите исходник из примера - буду очень признателен,
кое чего я и сам накопал ..но как-то криво это работает - серверу я комманду посылаю от сервера ответа нет (( :

сервер
Код

procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var
  cmd_line : string;
begin
   with AContext.Connection.IOHandler do
   try
    begin
      cmd_line :=ReadLn;
      ListBox1.Items.Add(cmd_line);
      if cmd_line='-clr' then ListBox1.Clear;
      if cmd_line='-h' then
        Begin

          WriteLn('Some help here');
        End;
    end;
   finally
   Close;
   end;

end;

procedure TForm1.IdTCPServer1Connect(AContext: TIdContext);
begin
  with AContext.Connection.IOHandler do
  begin
   WriteLn('Hello from server.');
  end;
end;


клиент
Код

begin
with idTCPClient1 do
  try
   Connect;
   ListBox1.Items.Add(IOHandler.ReadLn);
  except
   ListBox1.Items.Add('Connection error');
  end;
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
   with idTCPClient1.IOHandler do
  begin
   try
    Open;
    WriteLn(Edit1.Text);
   finally
    Close;
   end;
  end;
end;

procedure TForm1.N3Click(Sender: TObject);
begin
  try
   idTCPClient1.Disconnect;
   ListBox1.Items.Add('disconnected from server');
  except
   ListBox1.Items.Add('server not responced');
  end;
end;


Это сообщение отредактировал(а) wagner - 19.5.2005, 07:49
PM MAIL   Вверх
<Spawn>
Дата 21.5.2005, 05:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 1
Всего: 64



Так зачем ты обращаешься к IOHandler? Ты его хоть к компоненту прицепил? Для твоего примера достаточно написать:

Код

idTCPClient1.WriteLn('asdf');


И для установленного соединения:

Код

AContext.Connection.WriteLn();


Под рукой нет Indy 10, т.к. не установлена Delphi 2005, но на Indy 9 все работает.


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
KEM
Дата 23.2.2007, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 152
Регистрация: 28.1.2005

Репутация: нет
Всего: 2



Может есть у кого что новое по теме ?

Код

procedure TForm1.Timer1Timer(Sender: TObject);
var
    ftmpStream : TMemoryStream;
begin
 Timer1.Enabled := False;
try
// if not IdTCPClient1.Connected then
//   IdTCPClient1.Connect;
    //if connected then Close;
   // open;
   IdTCPClient1.
   IdTCPClient1.Socket.WriteLn('SRN'); - А ЭТО НА СЕРВЕРЕ НИКАК НЕ ФИКСИРУЕТСЯ
    // delete if exists
    // in production situation you might store binary downloads like this in a cache folder
    ftmpStream := TMemoryStream.Create;
    while IdTCPClient1.Connected do  -- ВОТ ТУТ ВЫЛЕТАЕТ ОШИБКА
     Begin
        IdTCPClient1.Socket.ReadStream(fTmpStream,-1,true);
     End;
    inc(i);
    fTmpStream.SaveToFile(intToStr(i)+'.jpg');
    FreeAndNil(fTmpStream);
    IdTCPClient1.Disconnect;
    Timer1.Enabled := True;
except
on E : Exception do
    ShowMessage(E.Message);
end;

end;

Вообщем так и не вкурил как в инди 10 потоки принимать на клиенте и отправлять на сервере...  smile 

Update:
Оказалось всё просто, в самом начале выше приведённой процедуры надобыло нипмсать
Код

IdTCPClient1.Disconnect;
try
 IdTCPClient1.Connect;
except on E: Exception do
 ShowMessage(E.Message);
End;

Странно но работает...

Это сообщение отредактировал(а) KEM - 25.2.2007, 16:46
--------------------
Мы растворяем сознание жизни, реальностью стал бешеный ритм...
PM MAIL   Вверх
Lexicss
Дата 21.1.2008, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 16.8.2006
Где: Беларусь, Минск

Репутация: нет
Всего: 1



Цитата(<Spawn> @  21.5.2005,  05:31 Найти цитируемый пост)
Так зачем ты обращаешься к IOHandler? Ты его хоть к компоненту прицепил? Для твоего примера достаточно написать:

код Pascal/Delphi
1:

idTCPClient1.WriteLn('asdf');


В Indy10 так нельзя. Метод WriteLn имеется только через IdTCPClient1.Connection.IOHandler
или (только на клиенте) IdTCPClient1.Socket
--------------------
Бери от жизни всё.
PM MAIL WWW ICQ Skype   Вверх
Snowy
Дата 22.1.2008, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



PM MAIL   Вверх
Delphist
Дата 1.3.2009, 02:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: нет
Всего: 3



Цитата(Snowy @ 22.1.2008,  15:49)
http://indy.fulgan.com/ZIP/Indy10demo.zip

Snowy, как те удалось ее найти? Я вот на это дупло зашел http://www.projectindy.org/Sockets/Demos/index.EN.aspx - не фига нет по сегодняшний день?
У кого-нибудь есть букварь на русском по Indy10, подобие книжке Глубины Indy - правда там рассматривалось для Indy9 


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
myk
Дата 9.4.2009, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 2.3.2009

Репутация: нет
Всего: нет



дайте нам букварь!(=
PM MAIL   Вверх
davemus
Дата 22.5.2009, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 1.4.2009

Репутация: нет
Всего: нет



Цитата(myk @  9.4.2009,  08:35 Найти цитируемый пост)
дайте нам букварь!(=


и мне  smile  smile 
PM MAIL   Вверх
MetalFan
Дата 22.5.2009, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 14
Всего: 128



читайте на англицком и смотрите сорцы. там же все просто


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
jsj
Дата 16.2.2010, 19:56 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.3.2009

Репутация: нет
Всего: нет



Ок, а как сделать чтобы порт был любым для подключения?
Ну на сервере - я поставил НОЛЬ, типа он все принимает...

А на клиенте НОЛЬ не пашет - но фиксированно задавать порт - не колонкор - а как сделать цивильно?
А, народ? =)
PM MAIL   Вверх
Snowy
Дата 17.2.2010, 16:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Цитата(jsj @  16.2.2010,  19:56 Найти цитируемый пост)
а как сделать чтобы порт был любым для подключения?
Никак - это фантастика.
Так не бывает.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.1723 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.