[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. |
|
|
|