La situación es la siguiente: Tengo una aplicación Java que se comunica por TCP a un microcontrolador con pila TCP. La pila en el controlador funciona bien, puedo solucionar esto.Java Sockets: Socket.close() termina la conexión diferente en Windows y Mac?
El problema es: Cuando termino mi conexión con el controlador, simplemente uso socket.close()
y la conexión finaliza, no hay problema. En mi Mac, esto también funciona, pero cuando consulto Wireshark, existe el proceso de finalización regular [FIN,ACK]
- [ACK]
, pero seguido de un paquete [TCP Dup ACK]
, que, como afirma Wireshark, pertenece a mi paquete [FIN,ACK]
. Esto solo ocurre en una Mac y no ocurre en una máquina con Windows en una VM en mi Mac o en mi netbook ...
¿Hay algún ajuste que pueda usar para no transmitir este paquete Dup-ACK? En realidad, levanta la pila en el Controlador al afirmar que la sesión cerrada sigue activa y, después de 10 veces de conectarse al controlador, la pila no tiene más espacio para aceptar nuevas conexiones.
¡Estaría muy agradecido si alguien pudiera darme una pista!
¿Qué versión de Mac OS? – Daniel
Mac OS 10.6.6, Java Versión 1.6.0_22 –