Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Didattica > Corsi N - Z > Reti di calcolatori
 
[DOMANDA] Cli.Java e Ser.Java
Clicca QUI per vedere il messaggio nel forum
Hollywood
Dunque io avrei un paio di domande sul codice di queste pagine.

File Cli. Java

while ((c = sIn.read()) != -1) {
System.out.print((char)c);
}


Non ho ben capito a cosa serve questo codice, facendo delle prove, ho messo != 0 e mi stampa all'infinito il simbolo "?"


File Ser.Java

String sendString="Hello Net World!\n";
for (int i=0; i<slength; i++) {
s1out.write((int)sendString.charAt(i));
}



Perche per "stampare" questa stringa sul monitor, bisogna creare un ciclo che prende 1 carattere per volta, non esiste un metodo per stampare la stringa direttamente ???
Provo a dare una risposta :
Perche come argomento di getOutputStream() bisogna passare un carattere per volta ???

Grazie per le risposte

yeah
Il primo ciclo preleva un carattere alla volta dallo stream di input (ottenuto dal socket) fino a quando non finiscono i caratteri (e quindi, presumo, read() ritorna -1).

A quanto pare pertanto (non ho guardato il manuale) read() ritorna -1 quando lo stream di input è vuoto.

Il secondo ciclo non stampa su schermo, ma i caratteri della stringa, uno alla volta, sullo stream di output del socket.

yeah
Aggiungo: forse c'è anche un modo per inviare tutta la stringa insieme, ma inviare un carattere alla volta è più low-level :) (nel senso che è più vicino a quello che succede sulla linea, dove viene inviato un bit alla volta).

Purtroppo sono uno sfortunato a cui gli sono state insegnate ConsoleInputManager e ConsoleOutputManager. Quindi ho dato l'esame di informatica generale ma non so leggere caratteri e stamparli secondo lo standard Java.

Uno di questi gg dovrò leggere il manuale a riguardo.

P.S.: A qualcuno interessa il codice di client e server della chat, che il prof ha chiesto alla prima lezione?

futurbaggio
Originally posted by yeah
P.S.: A qualcuno interessa il codice di client e server della chat, che il prof ha chiesto alla prima lezione?


Ho messo il mio in un altro thread... se vuoi confrontalo e mi dici se hai fatto diversamente...

Per il resto, il metodo write di Outputstrem come riportato sulla documentazione ha le seguenti forme:

write(byte[] b)
write(byte[] b, int off, int len)
write(int b)

Per fare la cosa facile si potrebbe fare un metodo che converte una stringa direttamente e ridurre il codice ma in questo caso si poteva evitare visto che era una semplice applicazione...

Per il -1... beh io sono rimasto nel dubbio, la documentazione afferma che indica la fine delle trasmissioni su uno stream di dati ma a me per la chat non ha funzionato molto... cmq in linea teorica dovrebbe essere così!

Roberto

mao
Ciao,

ho provato solo adesso a compilare e ad eseguire i due programmi Cli e Ser.
Dal prompt dos, vado nella mia cartella d:\reti e compilo senza problemi con javac Cli.java e mi crea il file Cli.class

Il problema sorge quando do il comando "java Cli" mi ritorna un messaggio di errore di questo tipo:
Exception in thread "main" javac.lang.NoClassDeffoundError: Cli

Sembra che non trovi il file .class, ma questo si trova nella stessa identica cartella, è li!

Come posso fare per eseguire questi due programmi con successo?

Aiuto, per favore.
ciao Mao

0m4r
Il nome della classe nel file java è identico (e per indentico intendo anche maiuscole e minusole) al nome del file java che la contine? E' percaso specificato un package nella classe java?

mao
sì sono identici i nomi, sono gli esercizi che ho scaricato dallo zip della lezione 1 del laboratorio di reti.

ci sono due riferimenti :
import java.net.*;
import java.io.*;

E nell'eseguire Cli e Ser mi restituiscono sempre quell'errore.

come devo fare?

0m4r
non sono gli import il problema, posta il codice per intero e l'esatta linea di comando che usi per compilare ed eseguire il codice, ricordati di usare i tag code, alemno cois il codice resterà ordinato...

mao
problema risolto, c'era un'altra installazione, quella della jre che andava in conflitto con sdk.

ora funge!

ciao e grazie.

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate