Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.08.2014, 15:58
Shaft Shaft вне форума
Новичок
 
Регистрация: 15.05.2013
Сообщения: 74
Версия Delphi: 7/10.4
Репутация: 12
По умолчанию Indy udp в консольном приложении

Всем привет! Нашел в инете код но он почему то не работает(при коннекте на порт 27010 ничего не происходит), подскажите пожалуйста в чем дело.

Код:
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;

constructor TUDPServer.Create;
begin
  idUDPServer:=tIdUDPServer.create(nil);
  idUDPServer.DefaultPort:=27010;
  idUDPServer.BufferSize:=8192;
  idUDPServer.BroadcastEnabled:=false;
  idUDPServer.OnUDPRead:=IdUDPServer1UDPRead;
  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');
readln;
end;

begin
with TUDPServer.Create do
  try
    writeln( 'Running' );
    readln
  finally
    free;
  end;
end.
Ответить с цитированием
  #2  
Старый 07.08.2014, 23:08
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,057
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

А как ты подсоединяешься? Это же UDP...
Ответить с цитированием
  #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.

Последний раз редактировалось M.A.D.M.A.N., 08.08.2014 в 19:22.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:27.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter