![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как передать массив по сети используя 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;
Клиент ничего не принимает. Подскажите что не так?