Estoy escribiendo una biblioteca de base de datos que tendrá que soportar inteligentemente tiempos de espera. Ahora que estoy mirando a la agrupación de conexiones, estoy particularmente preocupado por el siguiente escenario:¿Cómo evito las respuestas tardías a un socket TCP?
- Enviar consulta # 1
- Tiempo después n segundos.
- Enviar consulta # 2
- recibir una respuesta a la consulta # 1
Paso cuatro pueden pasar, porque las consultas no están marcados con un identificador de consulta: Lo que sé es que he recibido una respuesta, y no sé a qué consulta pertenece. Se podría argumentar que esto constituye un error en el protocolo, pero eso no depende de mí.
Antes de enviar la consulta n. ° 2, ¿qué debería hacer con el socket para evitar una respuesta tan tardía? ¿Es la única forma correcta de shutdown()
, close()
y volver a connect()
?
¿Qué pasa con la adición constante al selecto de todas las consultas por lo que su biblioteca podría identificar qué consulta la respuesta es para? – T3hc13h
Esa es una gran idea, pero lamentablemente no es muy buena para una biblioteca. Tal vez a través de un complemento ... –