Création de requête sur la définition de nouveaux événements sur le dessus d'un ensemble d'événements existant pour un protocole de prise

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

  •  26-10-2019
  •  | 
  •  

Question

J'ai écrit un programme de serveur Java et client à l'aide JBoss Netty. Pour envoyer des données au client à distance et recevoir des données en arrière d'eux, je l'ai défini des événements et des gestionnaires pour chaque événement. Sur le fil, chaque événement est juste un en-tête d'un seul octet (opcode) suivi par les octets de message. Dans un premier temps, je n'avais pris en charge TCP et avait défini des événements comme LOG_IN, LOG_OUT, DATA_IN, DATA_OUT etc dans mon programme. Pour par exemple

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

Alors j'ai décidé de soutenir également UDP et a fini par avoir des événements comme LOGIN_UDP, LOGIN_TCP, DATA_OUT_TCP ou DATA_OUT_UDP etc afin que fonction de l'événement généré par le gestionnaire d'événement correct obtiendrait l'événement et l'écrire à la prise appropriée et port distant.

Comme vous pouvez le voir la première question que je suis face est que j'ai presque doublé le nombre d'événements définis et des gestionnaires d'événements sur l'ajout d'UDP. Y at-il une meilleure façon d'aborder ce scénario?

Le second (mineur) question que je suis confronté est que des événements comme DATA_OUT ont un sens lorsque vous écrivez du serveur au client, mais lors de la réception du même événement au côté client « DATA_OUT » ne fait pas un tel sens, car il est en fait les données entrantes pour le client. Pour le moment, j'ai un décodeur qui se traduira par DATA_OUT à DATA_IN. Est-ce la meilleure approche?

Était-ce utile?

La solution

Vous pouvez utiliser modèle d'usine pour créer une connexion sur la base du canal de type à savoir TCP ou UDP. D'autres détails vous devez définir une fois dans ce cas

Au lieu d'appel DATA_OUT vous pouvez l'appeler comme SERVER_OUT même SERVER_IN façon

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top