|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: May 2003
Messaggi: 119
|
[Java] I/O da socket
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 |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2004
Città: Montignoso(MS)
Messaggi: 9458
|
Per controllare se fare o meno la readLine potresti utilizzare il metodo available() che restituisce true se ci sono byte da leggere, false altrimenti.
__________________
"Il Meglio che si possa ottenere è evitare il peggio." I.C. |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: May 2003
Messaggi: 119
|
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 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:34.



















