Серверные порты Delphi Indy 9

Я всегда работал с indy 9 и Delphi 7. У меня уже есть опыт работы с ним, но я хотел бы пойти немного дальше. Я хотел бы слушать несколько портов и не знаю, как мне это сделать. Также есть опасения, смогу ли я добавлять/удалять порты, пока сервер активен. Итак, вот несколько вопросов, на которые я хотел бы получить ответ:

  1. Как добавить новый порт в привязки, когда сервер уже активен?
  2. Как удалить порт из привязки, когда сервер уже активен?
  3. Когда я удаляю привязки, как Indy отключит клиентов от порта?
  4. Что происходит со свойством defaultPort?

Спасибо за ваши ответы.


person Benjamin Weiss    schedule 08.11.2012    source источник
comment
Indy 10 доступен со времен Delphi 7 (более или менее), а Indy 11 сейчас находится в активной разработке, а Indy 9 не пользуется популярностью уже много лет, поэтому рассмотрите возможность обновления своего кода до Indy 10.   -  person jachguate    schedule 09.11.2012


Ответы (1)


1.Как добавить новый порт в привязки, когда сервер уже активен?

2.Как удалить порт из привязки, когда сервер уже активен?

3. Когда я удаляю привязки, как Indy отключит клиентов от порта?

На все три вопроса один и тот же ответ - то, о чем вы просите, не поддерживается (даже в Indy 10). Вы должны деактивировать сервер, прежде чем сможете вносить какие-либо изменения в его Bindings коллекцию. Если это не соответствует вашим потребностям, вам придется использовать отдельный серверный компонент для каждой пары IP/порт, которую вы хотите прослушивать. Таким образом, вы можете активировать/деактивировать их по отдельности по мере необходимости. При деактивации сервера автоматически отключаются все активные клиенты, подключенные к нему.

4.Что происходит со свойством defaultPort?

Свойство DefaultPort используется только для инициализации свойства TIdSocketHandle.Port при добавлении новой записи в коллекцию Bindings. Ни для чего другого он не используется.

person Remy Lebeau    schedule 08.11.2012
comment
Спасибо, это то, что мне нужно было знать :) - person Benjamin Weiss; 09.11.2012
comment
Однако я решил, что могу запустить новые экземпляры TIdTCPServer. Это поможет. - person Benjamin Weiss; 09.11.2012