Форум: "Сети";
Текущий архив: 2008.02.10;
Скачать: [xml.tar.bz2];
ВнизКак передать массив по сети используя 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.039 c