Тайм-ауты сокетов в Убунте

Вопросы программирования и использования среды Lazarus.

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

Тайм-ауты сокетов в Убунте

Сообщение ElectroGuard » 18.06.2016 18:14:46

Добрый всем день. Скажите - нормально ли работают тайм-ауты на сокетах в Убунте?
Проблемы две. Во-первых - пытаюсь установить тайм-аут:
Socket.SetRecvTimeout >
synsock.SetSockOpt(FSocket, integer(SOL_SOCKET), integer(SO_RCVTIMEO), @timeval, SizeOf(timeval));
мне возвращается ошибка 22, EINVAL - invalid argument, передавал в либу таймаут = 100000.
Также необходимо вызывать Socket.CanRead, пытался делать это с параметром 0 либо 1 - в обоих случаях получал зависание, тайм-аут не срабатывает.
Под Windows оба случая работают нормально.
ElectroGuard
новенький
 
Сообщения: 71
Зарегистрирован: 03.06.2016 12:10:22

Re: Тайм-ауты сокетов в Убунте

Сообщение CRobin » 21.06.2016 01:46:00

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

Re: Тайм-ауты сокетов в Убунте

Сообщение ElectroGuard » 30.06.2016 20:24:29

timeval же и передаю - и ошибку возвращает
ElectroGuard
новенький
 
Сообщения: 71
Зарегистрирован: 03.06.2016 12:10:22

Re: Тайм-ауты сокетов в Убунте

Сообщение CRobin » 21.12.2016 07:55:39

1) Для корректной работы структура должна состоять из двух 8байтовых полей.
2) Кто нибудь знает почему система округляет значение tv_usec до миллисекунд. Например, если SetSockOpt tv_usec = 123456, то GetSockOpt tv_usec = 123000. Как быть, если таймаут нужно передать именно в микросекундах? И поддерживает ли ОС Ubuntu 16 такие таймауты?
CRobin
постоялец
 
Сообщения: 145
Зарегистрирован: 26.01.2016 12:15:39

Re: Тайм-ауты сокетов в Убунте

Сообщение mig-31 » 21.12.2016 18:24:46

Стандартно SystemClock=1kHz = 1msec. Раньше был параметер настройки ядра перед его компилярированием, где можно было выставить SystemClock = 1MHz для мульмедиа программ. Сейчас почти в каждом дистро есть готовое ядро с Real-Time расширением (Soft real time). Установите его должно помочь.
mig-31
постоялец
 
Сообщения: 224
Зарегистрирован: 14.07.2011 13:46:48

Re: Тайм-ауты сокетов в Убунте

Сообщение olegy123 » 22.12.2016 02:59:29

А почему нельзя использовать неблокирующий секет?
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: Тайм-ауты сокетов в Убунте

Сообщение runewalsh » 22.12.2016 17:03:13

Аватара пользователя
runewalsh
энтузиаст
 
Сообщения: 578
Зарегистрирован: 27.04.2010 00:15:25


Вернуться в Lazarus

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

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

Рейтинг@Mail.ru