Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа с UDP, в консоле 
V
    Опции темы
Apls
  Дата 6.8.2007, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 29.6.2007

Репутация: нет
Всего: нет



Компонент Indy, как я понял, можно использовать только если создать форму.
А как работать в протоколом UDP, если я в delphi создаю консольное приложение?
PM MAIL   Вверх
Sanchezzz
  Дата 6.8.2007, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 1
Всего: 60



с помощью его классов, я видел исходник FTP сервера на консоли с использованием инди.
а лучше ICS или старый добрый winsocket.


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Snowy
Дата 6.8.2007, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Цитата(Apls @  6.8.2007,  22:15 Найти цитируемый пост)
Компонент Indy, как я понял, можно использовать только если создать форму.
Не правильно понял smile 
Рантайм создание ещё никто не отменял.
Код

var
  udp: TIdUDOClient;
begin
  udp := TIdUDOClietnt.Create(nil);
  try
    udp. [юзаем]
  finally
    udp.Free;
  end;
end;

PM MAIL   Вверх
Apls
Дата 7.8.2007, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 29.6.2007

Репутация: нет
Всего: нет



При запуске ругается на строку 
Код

udp: TIdUDOClient;

А помимо компонентов Indy, в delphi есть какие функции для работы с UDP протоколом?
PM MAIL   Вверх
Snowy
Дата 7.8.2007, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Цитата(Apls @  7.8.2007,  09:02 Найти цитируемый пост)
При запуске ругается на строку 
Это потому что там опечатка. Называется "найди сам"  smile 
Кроме того в uses должен быть IdUDPClient
PM MAIL   Вверх
Apls
Дата 7.8.2007, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 29.6.2007

Репутация: нет
Всего: нет



Да, опечатка глупая =).
Сэнькс. Вроде заработало. Но тему пока не закрываю, думаю вопросы еще появятся.
Вдруг кто-нибудь еще какие примеры знает, пишите =)
PM MAIL   Вверх
Sanchezzz
  Дата 7.8.2007, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 1
Всего: 60



вот мой вариант немного доработать нужно что нужно прикрутишь правда я накатал сервера обычно сервер в консоле. а клиент под оболочку.

Код

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils,IdSocketHandle,IdUDPBase,
  IdUDPServer,IdBaseComponent, IdComponent,
  idGlobal,IdStackBSDBase;


  type
  TUDPServer = class
  private
  IdUDPServer: TIdUDPServer;
  procedure IdUDPServer1UDPRead(ASender: TObject;AData: TBytes; ABinding: TIdSocketHandle);
  public
  constructor Create; reintroduce;
  destructor Destroy; override;
  end;

constructor TUDPServer.Create;
begin
  idUDPServer := tIdUDPServer.create( nil ) ;
  idUDPServer.DefaultPort:=7777;
  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:
  TBytes; ABinding: TIdSocketHandle);
var
data:string;
 begin
Data:=IdUDPServer.ReceiveString(-1);
//можно было сразу сделать writeln
//AData перевисти в strings
//Data:= bytestostring(AData)
writeln(data);
readln;
end;

begin
with TUDPServer.Create do
  try
    writeln( 'Running, press [enter] to terminate' ) ;
    readln
  finally
    free;
  end;

end.



--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0564 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.