2011-05-11 7 views
10

¿La opción SO_RCVTIMEO afecta a accept (haciendo que devuelva EAGAIN o EWOULDBLOCK si el tiempo de espera expira)? ¿Hay algún comportamiento especificado por el estándar? No puedo encontrarla en la documentación de accept o el uso de opciones:¿SO_RCVTIMEO afecta accept()?

http://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_10_16

+1

Me parece recordar que la respuesta es no, pero no recuerdo si el contexto era SO o algo que leí. Stevens solo menciona que leen, leen, recv, recvfrom y recvmsg como afectados. Parecería que si acepta se viera afectado por la opción se documentaría en alguna parte porque, bueno, sería útil en algunos casos. – Duck

+0

Además, ¿no es cierto que una conexión no entrará en la cola pendiente hasta que la de 3 vías ya esté completa? Eso negaría el punto ya que volverás con un nuevo socket o no. – Duck

+0

Estaba pensando en un socket de bloqueo y el tiempo 'accept' pasa bloqueado cuando no hay intento de conexión. –

Respuesta

12

Mientras que en POSIX SO_RCVTIMEO se define por "una función de entrada", y SO_SNDTIMEO se define por "una función de salida", me No puedo encontrar ninguna definición para "función de entrada" o "función de salida", así que solo diré que son de lectura/recepción y de escritura/envío al menos.

En el caso específico de Linux, SO_RCVTIMEO afecta accept(), como se puede ver observando inet_csk_accept() y SO_SND_TIMEO afecta connect(), como se puede ver mirando tcp_sendmsg().

+1

+1 Interesante. Gracias por el útil enlace al sitio también. – Duck

+0

+1 y aceptado, ya que no parece haber nada más que decir al respecto, excepto los detalles de implementación para otras implementaciones. –

Cuestiones relacionadas