|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Andrey Sapozhnikov 2:5020/400 15 Nov 2002 22:19:29 To : Andrey Subject : Re: Работа с нескольк ими сокетами одноврем енно --------------------------------------------------------------------------------
Andrey wrote:
> При работе с сокетами для организации таймаута
> на установление соединения я использую
> неблокирующий ввод-вывод и функцию
> select(). В случае единственного сокета все
> оказывается достаточно прозрачно.
>
> Однако, теперь мне необходимо организовать
> одновременное подключение к нескольким портам
> удаленного хоста с таймаутом на установление
> всех соединений. Иными словами надо проверить
> установилось ли в течение заданного таймаута
> соединение хотя бы с одним из заданных портов
> удаленного хоста. В дальнейшем передавать или
> принимать данные не нужно.
>
> Возникает проблема: каким образом в этом случае
> можно контролировать таймаут всех соединений и,
> в то же время, проверять успешность установления
> соединения по каждому из портов?
Да все тривиально в общем-то. В селект подставляй
дескрипторы всех сокетов ждущих соединения. После
того как селект вернул готовность одного или
нескольких сокетов, соответственно помечай их как
ошибочные или успешно соединившиеся и выкидывай
из списка ожидаемых. После чего проверяй время, и
если еще осталось время и остались сокеты которые
еще в процессе соединения - заново возвращайся в
select скорректировав ему таймаут.
Андрей
--- ifmail v.2.15dev5
* Origin: Demos online service (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/65775821a4c7.html, оценка из 5, голосов 10
|