Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как передать массив по сети используя Indy?


Sp1r1t ©   (2007-04-21 00:14:00) 

Подскажите пожалуйста поподробнее как передать массив по сети используя Indy компоненты?


Сергей М.   (2007-05-24 10:47:00) [1]


> как выглядит работающий код?


сервер:
Athread.Connection.WriteStream(t, True, True);

клиент:
Client.ReadStream(t, Client.ReadInteger(False));

Справку читать нужно !


m11   (2007-05-24 10:26:00) [2]

Все таки как выглядит работающий код?
Почему оно не работает...
Обьясните чайнику


Sp1r1t   (2007-04-27 13:28:00) [3]

"спасибо" )
научился


Reindeer Moss Eater   (2007-04-25 14:50:00) [4]

Или еще лучше вот над этим фрагментом поразмышляй

Client.ReadStream(t,t.Size);


Reindeer Moss Eater   (2007-04-25 14:42:00) [5]

Убери свои клиенты и серверы.
Возьми два массива и мемори стрим.
И тренируйся копировать данные туда-сюда, пока не научишься.
Как надоест - нажми на F1.


Sp1r1t   (2007-04-25 14:38:00) [6]

Есть ли здесь люди которые мне помогут???


Sp1r1t   (2007-04-23 13:24:00) [7]

Сервер пишет массив

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
const
ar : array[0..5] of char = ('A','B','C','D','E','F');
var i:Integer;
    t:TMemoryStream;
begin
try
  t := TMemoryStream.Create;
  t.Write(ar,sizeof(ar));
  Athread.Connection.WriteStream(t,false,false);
  AThread.Connection.Disconnect;
finally
  t.Free;
end;


Клиент читает массив


procedure TForm1.Button1Click(Sender: TObject);
var
 t : TMemoryStream;
 ar : array [0..5] of char;
begin
try
  t := TMemoryStream.Create;
  Client.host:='127.0.0.1';
  Client.Port:=8990;
  Client.Connect;
  Client.ReadStream(t,t.Size);
  t.Position := 0;
  t.Read(ar,t.size);
  Client.Disconnect;
finally
  t.Free;
end;
 showmessage('ar[0] = '+ar[0]);
end;

Всеравно не передается массив. Или передается но не читается. Очень прошу исправить этот пример так чтобы он наконецто заработал, ато время поджимает...
Попробуй у себя запустить, короче пожалуйста помогите . . .


Eraser   (2007-04-22 12:38:00) [8]

> [3] Sp1r1t   (22.04.07 00:58)

ну правильно ) надо расставлять t.Position := 0; в нужных местах, а не где попало )

>  t := TMemoryStream.Create;
>  t.Position := 0;

здесь не надо.

>  Client.ReadStream(t,t.Size);
>  t.Read(ar,t.size);

здесь надо. между этими двумя строками.


Sp1r1t   (2007-04-22 00:58:00) [9]

Да


Eraser   (2007-04-21 22:46:00) [10]

> [1] Sp1r1t   (21.04.07 14:04)

соединение устанавливается?


Sp1r1t   (2007-04-21 14:04:00) [11]


procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
const
ar : array[0..5] of char = ('A','B','C','D','E','F');

var i:Integer; str:string;
   t:TMemoryStream;

begin
try
  t := TMemoryStream.Create;
  t.Write(ar,sizeof(ar));
  t.Position := 0;
  Athread.Connection.WriteStream(t,false,false);
  AThread.Connection.Disconnect;

finally
  t.Free;

end;

procedure TForm1.Button1Click(Sender: TObject);
var
 t : TMemoryStream;
 ar : array [0..5] of char;
begin
try
  t := TMemoryStream.Create;
  t.Position := 0;
  Client.host:='127.0.0.1';
  Client.Port:=8990;
  Client.Connect;
  Client.ReadStream(t,t.Size);
  t.Read(ar,t.size);
  Client.Disconnect;
finally
  t.Free;
end;
end;



Клиент ничего не принимает. Подскажите что не так?


Наверх

Титульная страница Поиск, карта сайта Написать письмо