Pregunta

Estoy usando un ServerSocket en mi servidor y tomas que utilizan ObjectIOStreams para enviar objetos serializables través de la conexión de red. Estoy desarrollando una versión esencialmente más económico de monopolio y por lo tanto los paquetes que se envían y confirmado como enviados / recibidos se requiere. ¿Es necesario poner en práctica mi propia vigilante de la pérdida de paquetes o es que ya cuidado con (Servidor) de sockets?

Me estoy pidiendo principalmente por la pérdida de paquetes durante repuntes de red o lo que sea, no error de conexión completa. P.ej. los hermanos se mueven una placa de plomo entre el router y el adaptador Wi-Fi del ordenador.

http://code.google. com / p / desigualdad / fuente / Navegar / # svn / trunk / src / red El código puede encontrarse en Red-> ClientController y Red-> Servidor

¿Fue útil?

Solución

Teóricamente; si. No hay manera de dar el 100% de garantía teórica de que lo que se envía a la capa de hardware, se recibe la misma manera en el extremo receptor.

Sin embargo la práctica, si se utiliza TCP (Transmission Control Protocol) esto ya se ha tenido cuidado de; no perderá ningún paquete. (Si utiliza UDP en el otro lado (User Datagram Protocol) es otra historia, y puede muy bien ser el caso de que usted está perdiendo paquetes, o se hacen fuera de servicio).

Sólo se veía brevemente en su código, y parece que está utilizando varios subprocesos. Si lo que debe ser absolutamente cuidadoso con la sincronización. Podría muy bien ser el caso de que se vea como un paquete se ha caído, aunque, simplemente no se maneja debido a una condición de carrera en el programa. (Tenga en cuenta que la interfaz gráfica de usuario, por ejemplo, se ejecuta en su propio hilo.)

La mejor manera de resolver la sincronización, creo, es poner el bucle de red en un / bucle poner-en-cola-sincronizado muy pequeña de lectura, y recoger los paquetes recibidos desde la cola cada vez que estás seguro de que nadie otro hilo va a intervenir.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top