TIdSocketHandle *SocketHandle = IdUDPServer1->Bindings->Add();
SocketHandle->IP = 10.10.10.10;
SocketHandle->Port = 6000;
Как заткнуть IdUDPServer при забиндивании его несущиствующим IP?
Код:
Если на компе нет сетевого интерфейса 10.10.10.10, а IdUDPServer1 брошен на форму в визуальном редакторе
то ваыскакивает окошко с такой ошибкой:
Цитата:
---------------------------
Project1
---------------------------
Socket Error # 10049
Cannot assign requested address.
---------------------------
ОК
---------------------------
Project1
---------------------------
Socket Error # 10049
Cannot assign requested address.
---------------------------
ОК
---------------------------
А если IdUDPServer создан динамически, то молчит как партизан!
У меня в проге несколько IdUDPServer динамических и обычных и ведут они себя поразному.
Почему так происходит?
Как заткнуть обычный IdUDPServer?
Как раскупорить динамический IdUDPServer?
Цитата: DENIS451
Почему так происходит?
Потому что на компьютере нет сетевого интерфейса с указанным адресом. Потому что статические компоненты активны, а динамические - нет.
Цитата: DENIS451
Как заткнуть обычный IdUDPServer?
Обработать эксепшн, не добалять несуществующих биндингов, биндить на все интерфейсы
Цитата: DENIS451
Как раскупорить динамический IdUDPServer?
Получить список доступных сетевых интерфейсов, определить требуемый и забиндиться на нем.
Я хотел спросить, как сделать чтоб выводились ошибки?
У меня в проге, перед забиндиванием, в любом случае компонент делаю неактивным,
а потом активным.
Цитата: DENIS451
Я хотел спросить, как сделать чтоб выводились ошибки?
Сделать активацию в блоке try .. except, обрабатывать конкретый тип исключения, выводить ошибку. При другом исключении - передавать его выше.
- один и тот же код работает поразному, смотря в чьём обработчике событий находится:
http://cbuilder.ru/index.php/topic,2631.msg15918.html#msg15918
Если обработчиком событий ты называешь event-ы типа OnXXX, то с Indy это естественно - она создает дополнительные потоки и не синхронизирует вызовы таких методов как UDPRead с основным потоком - это должен сделать ты сам.
Спасибо!