Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как заткнуть IdUDPServer при забиндивании его несущиствующим IP?

3.3K
19 октября 2008 года
DENIS451
38 / / 31.12.2004
Как заткнуть IdUDPServer при забиндивании его несущиствующим IP?

 
Код:
TIdSocketHandle *SocketHandle = IdUDPServer1->Bindings->Add();
SocketHandle->IP   = 10.10.10.10;
SocketHandle->Port = 6000;


Если на компе нет сетевого интерфейса 10.10.10.10, а IdUDPServer1 брошен на форму в визуальном редакторе
то ваыскакивает окошко с такой ошибкой:

Цитата:
---------------------------
Project1
---------------------------
Socket Error # 10049

Cannot assign requested address.
---------------------------
ОК
---------------------------



А если IdUDPServer создан динамически, то молчит как партизан!

У меня в проге несколько IdUDPServer динамических и обычных и ведут они себя поразному.

Почему так происходит?

Как заткнуть обычный IdUDPServer?

Как раскупорить динамический IdUDPServer?

14
20 октября 2008 года
Phodopus
3.3K / / 19.06.2008
Цитата: DENIS451

Почему так происходит?


Потому что на компьютере нет сетевого интерфейса с указанным адресом. Потому что статические компоненты активны, а динамические - нет.

Цитата: DENIS451

Как заткнуть обычный IdUDPServer?


Обработать эксепшн, не добалять несуществующих биндингов, биндить на все интерфейсы

Цитата: DENIS451

Как раскупорить динамический IdUDPServer?


Получить список доступных сетевых интерфейсов, определить требуемый и забиндиться на нем.

3.3K
20 октября 2008 года
DENIS451
38 / / 31.12.2004
Получить список доступных сетевых интерфейсов, определить требуемый и забиндиться на нем.

Я хотел спросить, как сделать чтоб выводились ошибки?

У меня в проге, перед забиндиванием, в любом случае компонент делаю неактивным,
а потом активным.
14
21 октября 2008 года
Phodopus
3.3K / / 19.06.2008
Цитата: DENIS451

Я хотел спросить, как сделать чтоб выводились ошибки?


Сделать активацию в блоке try .. except, обрабатывать конкретый тип исключения, выводить ошибку. При другом исключении - передавать его выше.

3.3K
21 октября 2008 года
DENIS451
38 / / 31.12.2004
Я эту тему поднял ещё на одном форуме, и там выяснилась ещё одна странность
- один и тот же код работает поразному, смотря в чьём обработчике событий находится:

http://cbuilder.ru/index.php/topic,2631.msg15918.html#msg15918
14
21 октября 2008 года
Phodopus
3.3K / / 19.06.2008
Если обработчиком событий ты называешь event-ы типа OnXXX, то с Indy это естественно - она создает дополнительные потоки и не синхронизирует вызовы таких методов как UDPRead с основным потоком - это должен сделать ты сам.
3.3K
21 октября 2008 года
DENIS451
38 / / 31.12.2004
Спасибо!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог