Buongiorno,
Ho un problema da risolvere in ambito didattico per la soluzione di un progettino.
Il tutto riguarda l'invio di "comandi" di un byte tra un Client e un Server via TCP. Non ho la possibilità di vedere il codice del Server quindi mi devo attenere a quanto fornito in documentazione.
Questo è quanto è dato di sapere:
La comunicazione è basata sullo scambio di comandi e risposte di un singolo byte; alcuni comandi considerano il byte suddiviso in campi di bit, a cui sono assegnati specifici significati; in altri casi, i byte vengono interpretati come valori numerici a 8 bit.
I comandi hanno la seguente struttura:
* bit 7-6: riservati per future espansioni
* bit 5-2: opcode di comando
* bit 1-0: codice di direzione
Il comando che adesso mi interessa è il 9 ovvero:
COMANDO - 9 - Registra il client sul server; questo comando deve essere inviato prima di ogni altro comando, e il byte di comando deve essere seguito da una stringa ASCII NUL-terminated.
Ho provato in mille modi ma adesso sono fermo, non riesco ad andare avanti. Ho fatto varie ricerche sul forum ma sono un pò perplesso, ogni cosa che provo a fare non funzia.
Riporto quanto fatto:
codice:
....
final byte REGISTER = (byte) 9;
....
// creo il clientSocket
clientSocket = new Socket(InetAddress.getByName(hServer), port); // connessione
DataOutputStream os = new DataOutputStream(clientSocket.getOutputStream());
System.out.println("INVIO IL COMANDO 9");
//visualizzo il 9 in binario...
System.out.println(Integer.toBinaryString(9));
//scrivo il comando 9 sullo Stream
os.writeByte((byte) REGISTER);
os.writeUTF(nome+"\0");
os.flush(); // scarico lo stream di output
//ricevo la risposta del server...
DataInputStream iStream = new DataInputStream(clientSocket.getInputStream());
questo è uno dei mille modi in cui ho provato ma ricevo sempre in risposta dal server che il
"Comando è illegale"... .
Credo che per questo comando non sia necessario andare a comporre gli 8 bit ( 2 + 4+ 2) ma serva soltanto inviare un byte che identifichi il valore 9 (1001). Sbaglio?
Qualche buon'anima ha qualche dritta per uscire da questo inghippo e continuare il progettino?
grazie ancora, shaq