Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    107

    Passere due valori interi al server tramite socket

    Non riesco a passare i dati, due interi, presi da standard input nel Client al server, in particolare quest'ultimo mi restituisce entrambi come se avessero valore 0.
    Codice client:
    codice:
    /* Leggo due numeri da standard input tramite la classe scanner */
     	Scanner scanner = new Scanner(System.in);
    	int myInt1 = scanner.nextInt();
    	int myInt2 = scanner.nextInt();
    	scanner.close();
    
    
    	/* Inizializza l'input stream (da tastiera) */
    	BufferedReader inFromUser =
    	new BufferedReader(new InputStreamReader(System.in));
    	/* Inizializza una socket client, connessa al server */
    	Socket clientSocket = new Socket(adress_server, port_server);
    	/* Inizializza lo stream di output verso la socket */
    	DataOutputStream outToServer =
    	new DataOutputStream(clientSocket.getOutputStream());
    	/* Invio i due interi al Server */
    	outToServer.writeInt(myInt1);
    	outToServer.writeInt(myInt2);
    Codice server:
    codice:
    Socket connectionSocket = welcomeSocket.accept(); 
    
    
    			/* Inizializza lo stream di input dalla socket */
    			BufferedReader inFromClient = 
    				new BufferedReader(new
    						InputStreamReader(connectionSocket.getInputStream())); 
    
    
    			/* Legge una linea dal client */
     			int value1 = inFromClient.read();  
             	int value2 = inFromClient.read();
    
    
    
    		System.out.print("Primo numero inviato dal client: " + value1);
    		System.out.print("Secondo numero inviato dal client: " + value2);

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da ROCCHEFILI Visualizza il messaggio
    codice:
    	DataOutputStream outToServer =	new DataOutputStream(clientSocket.getOutputStream());
    	/* Invio i due interi al Server */
    	outToServer.writeInt(myInt1);
    	outToServer.writeInt(myInt2);
    codice:
    			BufferedReader inFromClient = 
    				new BufferedReader(new
    						InputStreamReader(connectionSocket.getInputStream())); 
    
    
    			/* Legge una linea dal client */
     			int value1 = inFromClient.read();  
             	int value2 = inFromClient.read();
    Se da un lato usi DataOutputStream per inviare i 2 int, dall'altro lato DEVI usare DataInputStream.

    Il int read() di BufferedReader NON corrisponde/rispecchia assolutamente il writeInt(int) di DataOutputStream ! Sono due cose e due concetti radicalmente diversi.
    Ultima modifica di andbin; 02-05-2019 a 21:50
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2015
    Messaggi
    107
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Se da un lato usi DataOutputStream per inviare i 2 int, dall'altro lato DEVI usare DataInputStream.

    Il int read() di BufferedReader NON corrisponde/rispecchia assolutamente il writeInt(int) di DataOutputStream ! Sono due cose e due concetti radicalmente diversi.
    Ok grazie ho risolto, avevi ragione

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.