PDA

View Full Version : [java]lettura stream e memorizzazione parametri on the run...


santaclause83
08-06-2007, 10:45
sono un server di rete collegato con un socket su una determinata porta del client,e il client mi invia uno stream di caratteri ascii separati da "\n" dove ogni dato che sta tra tali caratteri è un parametro significativo per svolgere una determinata operazione.

tutto questo per un numero arbitrario di volte,specificato nella primissima parte dello stream.

adesso,stavo cercando di trovare un modo per estrarre i dati mano a mano che arrivavano sullo stream,senza dover per forza prima concatenare la stringa e poi andarci a leggere dopo.

ad es modificare questo ciclo in modo che ogni volta il che buffer venga letto,prima del "\n" il parametro,mettiamo caso sia proprio una stringa, venga direttamente memorizzato in una variabile:

String funzioni = "";



try{

while((letti = is.read(buffer,0,MAXBUF)) != -1)

funzioni +=new String(buffer,0,letti);

}catch (IOException e) {

e.printStackTrace();

return;

}



grazie mille,spero d'esser stato chiaro

andbin
08-06-2007, 11:24
sono un server di rete collegato con un socket su una determinata porta del client,e il client mi invia uno stream di caratteri ascii separati da "\n" dove ogni dato che sta tra tali caratteri è un parametro significativo per svolgere una determinata operazione.Se ciò che ti arriva è una serie di stringhe terminate da un fine riga, potresti "wrappare" il tuo InputStream in un InputStreamReader e poi ancora in un BufferedReader, che ha il metodo readLine().

^TiGeRShArK^
08-06-2007, 13:13
sono un server di rete collegato con un socket su una determinata porta del client,
fiko..
non capita tutti i giorni di parlare con un server di rete :D

santaclause83
08-06-2007, 15:48
nel caso in cui in questa serie di parametri,l'ultimo di ogni ciclo al posto di una stringa ASCII sia il binario di un file,come faccio a fare arrivare tutto al server in maniera omogenea con una outputstream?...

nel senso,la classe outputstream invia uno stream di bytes,quindi fin qui posso inviare qualsiasi cosa,ma trovo difficoltà nello schematizzare la bufferizzazione

sarà una serie di write fino a che non verrà letta una stringa tipo "END"

e così anche per le read del server nella ricezione....

es server:

while(true){
<leggi stream con readline>
<estrai parametri>
<estrai binario>
if <linea equivale a END> BREAK;
}

...suggerimenti/consigli?