Проблема Select под Debian

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Проблема Select под Debian

Сообщение CRobin » 09.02.2017 19:27:16

Здравствуйте. Не могу разобраться с функцией проверки сокетов Select на Дебиан
Код: Выделить всё
  function  mySelect  (s:cint; readfds, writefds, exceptfds: PFDSet; timeout: ptimeval_1): cint; cdecl; overload; external API name 'select';           


1) Не корректно работает следующий код, результат выполнения не предсказуем:
Код: Выделить всё
    select := mySelect(self.max_socket+1, @self.MasterFD, nil, nil, @self.timeout); 


Начинает корректно работать если перед вызовом делать переприсваивание аргументов
Код: Выделить всё
    self.TempFD := self.MasterFD;
    tv          := self.timeout;
    select := mySelect(self.max_socket+1, @self.TempFD, nil, nil, @tv);   


2) Не могу понять что означает первый аргумент. Под Windows он никакого значения не имеет, в чем его смысл под Дебиан?
CRobin
постоялец
 
Сообщения: 145
Зарегистрирован: 26.01.2016 12:15:39

Re: Проблема Select под Debian

Сообщение Дож » 09.02.2017 19:38:31

1) Нужно знать как объявлены и проинициализированы все переменные (self.MasterFD, self.timeout, self.TempFD, tv)
2) Первый аргумент используется внутри функции select для того, чтобы не перебирать все 256 бит в дескрипторных множествах (как правило, используемые в select дескрипторы не очень большие)
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: Проблема Select под Debian

Сообщение CRobin » 09.02.2017 20:03:03

Дож типы подбирал эмпирически, пока не заработало, подобный финт с переприсвоением я встречал у других авторов, к сожалению спросить у них нет возможности.
CRobin
постоялец
 
Сообщения: 145
Зарегистрирован: 26.01.2016 12:15:39

Re: Проблема Select под Debian

Сообщение Дож » 09.02.2017 20:17:55

Тогда могу только пожелать успехов в эмпирическом подборе работающего кода.
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: Проблема Select под Debian

Сообщение mig-31 » 09.02.2017 20:37:13

Смотрите man Linux.
mig-31
постоялец
 
Сообщения: 224
Зарегистрирован: 14.07.2011 13:46:48

Re: Проблема Select под Debian

Сообщение CRobin » 09.02.2017 21:30:58

mig-31 ткните носом в ман для Ubuntu 16.04, а то я маны читать не умею, а когда читаю, то не верю написанному и предпочитаю действовать наугад. Намного веселее и приятнее потратить на решение проблемы два дня и иметь сомнительный результат, чем тупо взять ман и за пять минут получить решение, которое гарантировано работает.
CRobin
постоялец
 
Сообщения: 145
Зарегистрирован: 26.01.2016 12:15:39

Re: Проблема Select под Debian

Сообщение MysticCoder » 11.02.2017 18:36:13

Дож писал(а):
Re: Проблема Select под Debian

Непрочитанное сообщение Дож » 09.02.2017 19:38:31
1) Нужно знать как объявлены и проинициализированы все переменные (self.MasterFD, self.timeout, self.TempFD, tv)


+
MysticCoder
постоялец
 
Сообщения: 154
Зарегистрирован: 14.09.2013 00:20:28


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11

Рейтинг@Mail.ru