Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник
Коллекция курьезных вопросов из форумов
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

IdTCPServer indy9 -> indy10


Саня ©   (19.10.18 22:52

Работал у меня на indy9 такой код(сервер посылает сообщение всем клиентам):
procedure TForm1.BitBtn1Click(Sender: TObject);
var
 Clients: TList;
 I: Integer;
begin
 Clients := IdTCPServer1.Threads.LockList;
try
 for I := 0 to Clients.Count-1 do begin
   try
     TIdPeerThread(Clients.Items[I]).Connection.Write('Hello');
   except
     TIdPeerThread(Clients.Items[I]).Stop;
   end;
 end;
finally
 IdTCPServer1.Threads.UnlockList;
end;


Помогите, будьте добры, с эквивалентом на indy10


Саня ©   (20.10.18 01:53[1]

Подскажите, что не так с отправкой с сервера клиенту?


unit Main;

interface

uses
 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdContext, Vcl.StdCtrls,
 IdBaseComponent, IdComponent, IdCustomTCPServer, IdTCPServer, IdGlobal,
 IdTCPConnection, IdTCPClient, IdHTTP;

type
 TMainForm = class(TForm)
   IdTCPServer: TIdTCPServer;
   Memo: TMemo;
   RunButton: TButton;
   procedure IdTCPServerExecute(AContext: TIdContext);
   procedure RunButtonClick(Sender: TObject);
 private
   Buffer: TIdBytes;
   IdContext: TIdContext;
   Str: AnsiString;
 public
   { Public declarations }
 end;

var
 MainForm: TMainForm;

implementation

{$R *.dfm}

procedure TMainForm.IdTCPServerExecute(AContext: TIdContext);
var
 RecvStr: string;
 Size: Integer;
begin
 IdContext := AContext;
 with AContext.Connection.IOHandler do begin
   if CheckForDataOnSource(10) then begin
     Size := InputBuffer.Size;
     if Size > 0 then begin
       InputBuffer.ExtractToBytes(Buffer, -1, False, 4);
       SetString(RecvStr, PAnsiChar(@Buffer[0]), Size);
       MainForm.Memo.Lines.Add(RecvStr);
     end;
   end;
 end;
end;

procedure TMainForm.RunButtonClick(Sender: TObject);
 i: Integer;
begin
 Str := 'Hello'+#0;
 SetLength(Buffer,Length(Str));
 for i := 1 to Length(Str) do begin
   Buffer[i-1] := Ord(Str[i]);
 end;

 IdContext.Connection.IOHandler.Write(Buffer);
end;

end.


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо