В C, если у вас есть определенный тип пакета, вы обычно определяете некоторую структуру и приводите char * в указатель на структуру. После этого у вас есть прямой программный доступ ко всем полям данных в сетевом пакете. Вот так :
struct rdp_header {
int version;
char serverId[20];
};
Когда вы получаете сетевой пакет, вы можете быстро сделать следующее:
char * packet;
// receive packet
rdp_header * pckt = (rdp_header * packet);
printf("Servername : %20.20s\n", pckt.serverId);
Этот метод действительно отлично работает для протоколов на основе UDP и позволяет очень быстро и очень эффективно анализировать и отправлять пакеты, используя очень мало кода, и тривиальную обработку ошибок (просто проверьте длину пакета). Есть ли аналогичный, такой же быстрый способ сделать то же самое в java? Или вы вынуждены использовать методы, основанные на потоках?