Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.02.10;
Скачать: CL | DM;

Вниз

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

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

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


 
Sp1r1t   (2007-04-21 14:04) [1]


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;



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


 
Eraser ©   (2007-04-21 22:46) [2]

> [1] Sp1r1t   (21.04.07 14:04)

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


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

Да


 
Eraser ©   (2007-04-22 12:38) [4]

> [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-23 13:24) [5]

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

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;

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


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

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


 
Reindeer Moss Eater ©   (2007-04-25 14:42) [7]

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


 
Reindeer Moss Eater ©   (2007-04-25 14:50) [8]

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

Client.ReadStream(t,t.Size);


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

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


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

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


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


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


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

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

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



Страницы: 1 вся ветка

Текущий архив: 2008.02.10;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
2-1200659659
GanibalLector
2008-01-18 15:34
2008.02.10
Move


15-1199607114
Ega23
2008-01-06 11:11
2008.02.10
Какую библиотеку надо импортировать в Delphi


15-1199560473
tesseract
2008-01-05 22:14
2008.02.10
задача Пупы Васькина


15-1199935567
Cj
2008-01-10 06:26
2008.02.10
IDE зависает, причем так - конкретно...


1-1193978134
kva
2007-11-02 07:35
2008.02.10
Использование своих шрифтов