Я написал java-сервер и клиентскую программу, используя JBoss Netty.Чтобы отправить некоторые данные удаленному клиенту и получить от него данные, я определил события и обработчики для каждого события.В сети каждое событие представляет собой однобайтовый заголовок (код операции), за которым следуют байты сообщения.Первоначально я поддерживал только TCP и определял события, такие как LOG_IN, LOG_OUT, DATA_IN, DATA_OUT и т. Д. В моей программе.Например,
public static final int LOG_IN = 0x08;
public static final int LOG_OUT = 0x0a;
Затем я решил также поддержать UDP и в итоге получил такие события, как LOGIN_UDP, LOGIN_TCP, DATA_OUT_TCP или DATA_OUT_UDP и т. Д., Чтобы на основе сгенерированного события правильный обработчик события получал и записывал егок соответствующему сокету и удаленному порту.
Как видите, первая проблема, с которой я сталкиваюсь, заключается в том, что я почти удвоил количество определенных событий и обработчиков событий при добавлении UDP.Есть ли лучший способ приблизиться к этому сценарию?
Вторая (незначительная) проблема, с которой я сталкиваюсь, заключается в том, что такие события, как DATA_OUT, имеют смысл при записи с сервера на клиент, но при получении того же события на клиенте.Сторона "DATA_OUT" не имеет такого смысла, поскольку это фактически входящие данные для клиента.На данный момент у меня есть декодер, который будет переводить DATA_OUT в DATA_IN.Это лучший подход?