PDA

View Full Version : [Java] I/O da socket


Molz
15-10-2004, 10:04
Ciao io ho 1 server ke deve leggere da socket un messaggio e poi rispondere sullo stesso socket al client.
Il problema è ke nn riesco a fare la lettura d modo ke funzioni sempre.
Ad esempio nn posso usare il metodo read() (di InputStreamReader o BufferedReader ecc) xké qesto ritorna -1 solo qando la socket viene kiusa.
Nn posso usare la readLine del BufferedReader xké il client può inviarmi righe vuote.
Nn posso usare la read(byte []) ke ritorna il numero d caratteri (o byte) letti e vedere se è minore della lunghezza dell'array xké nn funziona sempre (se il buffer è di 100 caratteri e il messaggio anke ritorna 100 e poi io mi rimetto in attesa) e inoltre ogni tanto inizia a leggere qando sulla socket nn c'è ancora tutto il messaggio e qindi taglia il finale.

Cosa posso fare?

Grazie ciao

Ed_Bunker
15-10-2004, 14:12
Per controllare se fare o meno la readLine potresti utilizzare il metodo available() che restituisce true se ci sono byte da leggere, false altrimenti.

Molz
16-10-2004, 08:36
Ho provato, ma così facendo succede ke il messaggio nn sempre mi viene letto totalmente.
Qesto avviene qando il client nn scrive l'intero messaggio sulla socket in "un unico colpo" (fatto causato dall'esistenza d + thread concorrenti) e qindi io leggo 1 parte del messaggio verifico ke nn c'è + nient'altro sulla socket e lo considero 1 messaggio nn valido