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

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

Клиент сервер и мемори стрим [D7, XP]


Fl@sh ©   (2006-05-10 15:42:00) 

Уважаемые мастера.
Работаю с клиент-сервером.
Нужно передать TMemoryStream с клиента на сервер и обратно.

Вот как передаю с сервера на клиент:
...
var
 ms: TMemoryStream;
 SL: TStringList;
...

//Код на сервере:
   SL := TStringList.Create;
   ms := TMemoryStream.Create;
   try
     try
       Sl.Add('asdf');
       sl.Add('sadfdfdf');
       sl.Add('sadfsdfsdfsdfsd');
       SL.SaveToStream(ms);
       MS.Position := 0;
       ASender.Thread.Connection.WriteStream(ms, true, false);
     except
       on E: Exception do
         Writeln('Error:' + e.Message);
     end;
   finally
     SL.Free;
     ms.Free;
   end;

//Код на клиенте:

 IdTCPClient.Connect;
 IdTCPClient.SendCmd('select');
 ms := TMemoryStream.Create;
 SL := TStringList.Create;
 try
   try
     IdTCPClient.ReadStream(ms, ms.Size, false);
     ms.Position := 0;
     SL.LoadFromStream(ms);
     Memo1.Lines.Assign(SL);
   except
     on e: Exception do
       showMessage('Error: ' + e.Message);
   end;
 finally
   SL.Free;
   ms.Free;
 end;

В таком случае передает, но первую строчку не посылает, интерестно почему бы это??

А вот с клиента на сервер, вообще ни в какую не идет!
Вот код, исправте меня пожалуйста:

Код на сервере:
   SL := TStringList.Create;
   ms := TMemoryStream.Create;
   try
     try
       ASender.Thread.Connection.ReadStream(ms, ms.Size, False);
       ms.Position := 0;
       sl.LoadFromStream(ms);
       Memo1.Lines.Assign(SL);
     except
       on E: Exception do
         Writeln('Error:' + e.Message);
     end;
   finally
     SL.Free;
     ms.Free;
   end;
Код на клиенте:
  IdTCPClient.Connect;
 IdTCPClient.SendCmd('select');
 ms := TMemoryStream.Create;
 SL := TStringList.Create;
 try
   try
     Sl.Add('asdf');
     sl.Add('sadfdfdf');
     sl.Add('sadfsdfsdfsdfsd');
     SL.SaveToStream(ms);
     MS.Position := 0;
     IdTCPClient.WriteStream(ms, True, False);
   except
     on e: Exception do
       showMessage('Error: ' + e.Message);
   end;
 finally
   SL.Free;
   ms.Free;
 end;


Когда посылаю команду, заходит в процедуру, но когда вот после
ASender.Thread.Connection.ReadStream(ms, ms.Size, False);
он не обращается к клиенту, чтоб прочитать, а идет дальше, почему, как исправить??

Или можно по другому, тогда как, можна маленький пример.


Fl@sh   (2006-05-10 19:27:00) [1]

Странно... Неужели никто не сталкивался с данным вопросом


Наверх

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