Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    costruire messaggio come array di byte

    salve,
    sono alle prese con la costruzione di un messaggio da inviare ad un server , questo messaggio deve essere del tipo

    VALORE LEN NOMEUTENTE

    dove VALORE è un intero di 1 byte
    dove LEN è un intero di 2 byte e rappresente la lunghezza del nome utente
    dove nomeutente è una stringa di LEN byte che rappresenta l'utente che dovra loggarsi ad un server

    siccome il server accetta un messaggio di tipo byte , come posso fare per costruire un messaggio composto da: 1 byte (VALORE ) + 2 byte (LEN) + len byte (stringa nomeutente).

    stavo pensando alla creazione di un array di byte in cuii inserire tutto il messaggio del tipo:
    codice:
    byte [] messaggio = new messaggio [1024]  //array di byte contennte il messaggio
    String nomeutente = new String ("pippo");  //nome utente che si vuole connettere
    int valore = 5; //valore di default
    int len = nomeutente.length(); //lunghezza nomeutente
    
    byte nomeu = nomeutente.getBytes(); //trasformo la stringa pippo in byte
    /*riempio l'array di byte con il messaggio*/
    
    messaggio[0]= valore
    messaggio[1]= len
    
    for(int i=3;i<len+3;i++)
    messaggio[i]= nomeu; //inserisco la stringa nell array di byte
    
    //ed invio al server
    outputstream.write(messaggio);
    è esatto questo tipo di costruzione di un messaggio formato da un array di byte?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: costruire messaggio come array di byte

    Originariamente inviato da ersecchio
    VALORE LEN NOMEUTENTE

    dove VALORE è un intero di 1 byte
    dove LEN è un intero di 2 byte e rappresente la lunghezza del nome utente
    dove nomeutente è una stringa di LEN byte che rappresenta l'utente che dovra loggarsi ad un server

    è esatto questo tipo di costruzione di un messaggio formato da un array di byte?
    No, non proprio completamente, perché del len che dovrebbe essere 2 byte ne hai fatto solo 1 byte (e messaggio[2] non l'hai scritto). E tra l'altro non ti compilerebbe nemmeno perché stai assegnando direttamente len (un int) ad un elemento byte.

    Se devi trattare dati binari di questo tipo e oltretutto il formato dei valori multibyte (come il len) è in big-endian, allora usa DataOutputStream (in cui incapsuli il tuo stream sottostante).

    Altrimenti impacchetta pure i dati più o meno come stai facendo, ma i valori multibyte come il len spezzali in modo appropriato.
    Ma nota ancora una cosa, l'array l'hai creato di 1024 byte ... ma così invii proprio 1024 byte. E credo che non sia affatto quello che vuoi.

    E ancora un'ultima cosa: quando si convertono stringhe in sequenze di byte (o viceversa), bisogna perlomeno sempre prestare attenzione alle questioni sul charset.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.