_ RU.LINUX (2:5077/15.22) ___________________________________________ RU.LINUX _
From : alexei betin 2:5020/627.10 08 Aug 99 16:47:32
Subj : таймаут на чтение из TCP сокета
________________________________________________________________________________
dmart@makova.com writes:
> Граждане, подскажите, пожалуйста, мне, темному, как можно установить
> таймаут на чтение из TCP сокета? Если верить man getsockopt, опция
> SO_RCVTIMEO только считывается (get only). Мне нужно, если клиент молчит
> больше 10 секунд, порвать connection и слушать порт дальше, ожидая
> следуюшего клиента , как это сделать?
есть два способа:
1. установить alarm(10), и перехватывать сигнал SIGALRM.
2. ждать появления информации на сокете с помощью select(), кот.
позволяет установить таймауты.
второй способ предпочтительней.
> Вообще маны на тему сабжа написаны безобразно. Понять структуру sockaddr
> и что туда надо писать, по манам невозможно, нужно брать работающие
> программы и смотреть, что и как делается там. Существует ли в продаже
> хорошая книжка на эту тему?
А маны и не нужно читать, надо читать:
$> info libc
кроме того сильно помгают unix-socket-faq и faq по программированию
сокетов в windows. Оба находятся через http://www.faqs.org