Consulta de diseño sobre la definición de nuevos eventos además de un conjunto existente de eventos para un protocolo de socket

StackOverflow https://stackoverflow.com/questions/6317684

  •  26-10-2019
  •  | 
  •  

Pregunta

Escribí un servidor Java y un programa de cliente usando JBoss Netty. Para enviar algunos datos al cliente remoto y recibir datos de ellos, he definido eventos y manejadores para cada evento. En el cable, cada evento es solo un encabezado de byte (Opcode) seguido de los bytes del mensaje. Inicialmente, solo había admitido TCP y había definido eventos como Log_in, Log_out, Data_in, Data_out, etc. en mi programa. Por ejemplo

public static final int LOG_IN = 0x08;
public static final int LOG_OUT = 0x0a;

Luego decidí admitir UDP también y terminé teniendo eventos como login_udp, login_tcp, data_out_tcp o data_out_udp, etc. para que, según el evento generado, el controlador de eventos correcto obtenga el evento y lo escriba en el socket y el puerto remoto apropiados.

Como puede ver, el primer problema que enfrento es que casi he duplicado la cantidad de eventos definidos y controladores de eventos para agregar UDP. ¿Hay una mejor manera de abordar este escenario?

El segundo problema (menor) que me enfrento es que los eventos como Data_out tienen sentido cuando escribe de servidor a cliente, pero cuando recibe el mismo evento en el lado del cliente "data_out" no tiene ese sentido, ya que en realidad son datos entrantes para el cliente. Por el momento, tengo un decodificador que traducirá data_out a data_in. ¿Es este el mejor enfoque?

¿Fue útil?

Solución

Puede usar el patrón de fábrica para crear conexión sobre la base del tipo de canal tipo, es decir, TCP o UDP. Otros detalles tendrás que definir una vez en este caso

En su lugar, llame a Data_out, puede llamarlo como servidor_Out de la misma manera server_in

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