Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Nioh 3: souls-like punitivo e Action RPG
Nioh 3: souls-like punitivo e Action RPG
Nioh 3 aggiorna la formula Team NINJA con aree esplorabili più grandi, due stili di combattimento intercambiabili al volo (Samurai e Ninja) e un sistema di progressione pieno di attività, basi nemiche e sfide legate al Crogiolo. La recensione entra nel dettaglio su combattimento, build, progressione e requisiti PC
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
La facilità di installazione e la completa automazione di tutte le fasi di utilizzo, rendono questo prodotto l'ideale per molti clienti. Ecco com'è andata la nostra prova in anteprima
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto
be quiet! debutta nel settore mouse da gaming con Dark Perk Ergo e Dark Perk Sym: due modelli gemelli per specifiche, con polling rate di 8.000 Hz anche in wireless, sensore PixArt PAW3950 da 32.000 DPI e autonomia dichiarata fino a 110 ore. Nel test, a 8.000 Hz si arriva a circa 30 ore reali, con ricarica completa in un'ora e mezza
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 11-09-2007, 16:24   #1
EnZiMa
Senior Member
 
L'Avatar di EnZiMa
 
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());
		}
	}
Client :
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);
		}
	}
Quando il client digita help per la lista dei comandi, il server invia una stringa con l'elenco dei comandi. Per ogni comando c'è /n che torna a capo, quindi è come se fossero 3 Stringhe. Il problema è che il client tramite il BufferedReader con il metodo readLine() mi stampa una stringa alla volta!
Come faccio a far stampare tutta la lista dei comandi in un colpo solo?

help me!

Grazie
__________________
Project HTPC: work in progress!
EnZiMa è offline   Rispondi citando il messaggio o parte di esso
Old 11-09-2007, 16:42   #2
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
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!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 11-09-2007, 18:08   #3
EnZiMa
Senior Member
 
L'Avatar di EnZiMa
 
Iscritto dal: May 2001
Messaggi: 191
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
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()); }
Ho provato...ma non funziona....ho risolto cosi!

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());
						}
byez
__________________
Project HTPC: work in progress!
EnZiMa è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequen...
Il camion elettrico eActros 600 scende i...
eFootball Kick-Off! è ufficiale: ...
Fallout 4: Anniversary Edition arriva su...
The Elder Scrolls IV: Oblivion Remastere...
18 articoli su Amazon super scontati da ...
Università La Sapienza di Roma: c...
Nuovi ribassi Amazfit su Amazon: Bip 6 a...
200 miliardi di dollari in un anno: la s...
OPPO Find X9s in arrivo con due varianti...
AirPods Pro 3 al minimo storico su Amazo...
MacBook entry level: si farà, ma ...
Un solo agente per tutto? OpenAI lancia ...
Il ridimensionamento di Realme è partito...
Google Pixel 10a si mostra in nuove imma...
Sicurezza domestica a meno di 21€ su Ama...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 10:34.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v