¿Problemas con el uso de TCP y UDP en la misma aplicación?

El punto de mi pregunta es preguntar si se acepta usar TCP y UDP para comunicarse entre el cliente y el servidor.

Estoy haciendo un juego de servidor de cliente en tiempo real con partes de la comunicación que necesitan ser garantizados (inicio de sesión, etc.), pero otras partes estarán bien para perder paquetes (actualizaciones de estado, etc). Por lo tanto, me gustaría usar UDP para la mayoría de la comunicación de datos, pero no quiero tener que implementar mi propio marco para asegurar que mi comunicación de control (registro) está garantizada.

Por lo tanto, sería razonable utilizar inicialmente TCP para administrar una conexión, y luego en un puerto separado enviar paquete de comunicación de datos y adelante?

Debería hacerlo de esa manera (use TCP y UDP para realizar diferentes tareas de comunicación). Y ni siquiera tiene que usar dos puertos diferentes. Uno bastará . Puede escuchar los dos protocolos diferentes en el mismo puerto.

Es bastante razonable y ya se utiliza en la corriente principal. Incluso cuando se navega por la Web, las operaciones DNS están basadas en UDP y las conexiones HTTP están basadas en TCP.

Tenga en cuenta que debe considerar los dos tipos de conexión para ser completamente independiente o emplear medidas adicionales para manejar adecuadamente cualquier interdependencias. Las conexiones TCP pueden tener problemas de temporización en el sistema operativo y los niveles de red y las conexiones UDP tienen problemas de pérdida de paquetes. Debe tomar medidas específicas para evitar bloqueos y problemas de rendimiento cuando la parte TCP de su aplicación se bloquea o se pierde un paquete UDP.

No sólo es aceptado, sino que es ampliamente utilizado. Como buen ejemplo, BATS Exchange está utilizando este enfoque en su sistema de distribución de datos de mercado , para implementar mecanismos de recuperación.

  • Retraso / retraso enorme de UDP con Android
  • DatagramSocket.bind (); Socket excepción: no se puede asignar la dirección solicitada. Emulador de Android
  • Enviar una estructura de C ++ sobre UDP en Java
  • ¿Cómo puedo convertir ByteArrayInputStream a jpeg y mostrar en android móvil?
  • Perforación UDP en Android; Servidor UDP
  • No se puede establecer el valor DSCP en la aplicación android
  • No se pueden recibir paquetes UDP adecuados mediante SSDP
  • Android: Implementación de un programa VoIP
  • Android nunca recibe paquetes UDP
  • Emulador de Android udp broadcast
  • Problema con DatagramSocket en Android 7.1.1
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.