2011-02-09 9 views
5

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!

+0

¿Qué versión de Mac OS? – Daniel

+0

Mac OS 10.6.6, Java Versión 1.6.0_22 –

Respuesta

0

De hecho, recomendaría hablar con el vendedor de la pila tcp/ip de su MCU.

Si bien es posible que pueda modificar este mac en particular, tendrá que arreglarlo de forma más permanente. Y hay suficientes macs por ahí que vas a tener que lidiar con eso antes o después.

+0

Modifiqué algunas rutinas para eliminar automáticamente una entrada de conexión inactiva. Todavía es interesante, java se comporta de manera diferente en este ejemplo en macs que en máquinas de Windows ... –

1

Bueno, si esto es un problema en la pila TCP proporcionada por el sistema operativo (que creo que es), puede tratar de telnet desde su mac al dispositivo y cerrar la conexión. Solo para ver si este ack dup se seguiría emitiendo. Si lo es, cambiar las versiones/proveedores de Java (por ejemplo) no servirá de mucho ...

... oh, ¿y quizás podría filtrar el paquete ofensivo con su firewall? Es una suposición descabellada, ya que en realidad no sé nada sobre el cortafuegos para MacOS ...

Cuestiones relacionadas