Показать сообщение отдельно
  #3  
Старый 07.08.2014, 23:26
Shaft Shaft вне форума
Новичок
 
Регистрация: 15.05.2013
Сообщения: 74
Версия Delphi: 7/10.4
Репутация: 12
По умолчанию

Я вот уже потом подумал что может возникнуть такой вопрос. Да, не точно выразил. Не подключаюсь а отправляю запрос. Программа отправляющая запрос моя "самописная" и у меня есть аналог этого сервера(тоже мой "самописный" но только не консольный. И они работают нормально.) Вот собрался его переделать под консольное приложение.

Ребят, проблема решена. Нужно было перед IdUDPServer.Active:=true; вписать IdUDPServer.ThreadedEvent:=True; и еще кое что "подшаманить"
Ниже выкладываю рабочий код, может кому пригодится.

Код:
program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils, Classes, IdSocketHandle, IdBaseComponent, IdComponent, IdUDPBase,
  IdUDPServer;
 
type
  TUDPServer = class
  private
  IdUDPServer: TIdUDPServer;
  procedure IdUDPServer1UDPRead(ASender: TObject;AData: TStream; ABinding: TIdSocketHandle);
  public
  constructor Create; reintroduce;
  destructor Destroy; override;
end;
var
   ExitFlag: boolean = false;
 
constructor TUDPServer.Create;
begin
  idUDPServer:=tIdUDPServer.create(nil);
  idUDPServer.DefaultPort:=27010;
  idUDPServer.BufferSize:=8192;
  idUDPServer.BroadcastEnabled:=false;
  idUDPServer.OnUDPRead:=IdUDPServer1UDPRead;
  IdUDPServer.ThreadedEvent:=True;
  IdUDPServer.Active:=true;
end;
 
destructor TUDPServer.Destroy;
begin
  IdUDPServer.Active:=false;
  IdUDPServer.free;
  inherited destroy;
end;
 
procedure TUDPServer.IdUDPServer1UDPRead(ASender: TObject;AData:
  TStream; ABinding: TIdSocketHandle);
begin
Writeln('KyKy');
end;
 
begin
with TUDPServer.Create do
  try
    writeln( 'Running' );
    repeat
    Sleep(1000);
    until ExitFlag;
  finally
    free;
  end;
end.
Ответить с цитированием