|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 191
|
[JAVA] Inviare Stringhe tramite socket
Salve, ho un problemino nell' invio di stringhe dal server al client
server : Codice:
public void run() {
if (socket.isConnected()) {
System.out.print("\n *** Connessione del Client : "
+ format(socket) + " ***");
}
try {
BufferedReader fromClient = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter toClient = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true); //autoflush
while (true) {
//Ascolto i messaggi del client
String userInput = fromClient.readLine();
if (!userInput.equals(null)) {
//stampo i messaggi del client
System.out.print("\nIl Client " + format(socket)+ " ha scritto : " + userInput);
//interpreto i messaggi del client
int valore = elaboraInput(userInput);
switch (valore) {
case 0:
toClient.println("Comando inserito non valido! Digitare help per la lista dei comandi");
break;
case 2:
toClient.println("Comando ancora non disponibile");
break;
case 11:
toClient.println("Comando 1\n"+
"comando 2\n"+
"comando 3");
break;
case 12:
toClient.println("Disconnessione dal Server...");
break;
}
}
if (userInput.equalsIgnoreCase("quit")){
toClient.close();
fromClient.close();
System.out.print("\n *** Disconnessione del Client : "
+ format(socket) + " ***");
socket.close();
break;
}
}
} catch (IOException e) {
System.out.print("\nErrore nella connessione con il Client "
+ format(socket) + " : " + e.getMessage());
}
}
Codice:
private void connetti(String ip, int porta) {
try {
Socket clientSocket = new Socket(ip, porta);
// clientSocket.setSoTimeout(5000);
System.out.println("In connessione con il Server...\n");
// Thread.sleep(10000);
PrintWriter toServer = new PrintWriter(new OutputStreamWriter(
clientSocket.getOutputStream()), true); // autoflush
BufferedReader fromServer = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream()));
BufferedReader console = new BufferedReader(new InputStreamReader(
System.in));
System.out.println("Connessione stabilita con il Server "
+ format(clientSocket) + "\n");
while (true) {
System.out.print("Client > ");
String userInput = console.readLine();
// se viene premuto invio non fare nulla
if (!userInput.equalsIgnoreCase("")) {
// mando al server
toServer.println(userInput);
// se scrivo quit, mando al server il messaggio di uscita ed
// esco dal ciclo
if (userInput.equalsIgnoreCase("quit")) {
toServer.println(userInput);
break;
}
// leggo la stringa del server e la stampo
String linea = fromServer.readLine();
System.out.println(linea);
}
}
console.close();
fromServer.close();
toServer.close();
clientSocket.close();
System.out.println("Connessione terminata con il Server "
+ format(clientSocket));
} catch (UnknownHostException e) {
System.out.println("Impossibile connettersi al Server " + ip + ":"
+ porta + " Host sconosciuto!");
} catch (IOException e) {
System.out.println("Errore nella connessione con il Server " + ip
+ ":" + porta);
}
}
Come faccio a far stampare tutta la lista dei comandi in un colpo solo? help me! Grazie
__________________
Project HTPC: work in progress! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Prova a usare Scanner (java.util) al posto di BufferedReader. Scanner ha un metodo hasNextLine() che ti permette di dire:
//leggo la risposta del server while(scanner.hasNextLine()) { System.out.println(scanner.nextLine()); }
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 191
|
Quote:
Codice:
// leggo la stringa del server e la stampo
String linea = fromServer.readLine();
//uso StringTokenizer per spezzare le stringhe
StringTokenizer tokenziner = new StringTokenizer(linea,":");
while(tokenziner.hasMoreTokens()) {
System.out.println(tokenziner.nextToken());
}
__________________
Project HTPC: work in progress! |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:34.



















