Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    258

    Problema di lettura di una stringa in una comunicazione client/server

    Salve a tutti, stavo realizzando un piccolo programmino in java con un client che invia una stringa a un server multitheading. Ho riscontrato un problema nella ricezione della stringa da parte del server, vi posto prima il codice del client e poi quello del server:
    Codice PHP:
    public class client {      
    public static 
    void main(String[] args) {                  
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in) );         
    Socket socket null;                               
    System.out.println("Apertura connessione...");         
    try {             
    socket = new Socket("localhost",6799);         
    } catch (
    UnknownHostException e) {             
    e.printStackTrace();                      } 
    catch (
    IOException e) {             
    e.printStackTrace();                 }          
    System.out.println("Inserisci il messaggio da inviare al server");     
    // Legge l'input e lo visualizza sullo schermo         
    String messaggio null;         
    try {             
    messaggio br.readLine();             
    System.out.println("Risposta: " +messaggio);         } 
    catch (
    IOException e) {              
    e.printStackTrace();         }         
    DataOutputStream dos null;         
    try {             
    dos = new DataOutputStream(socket.getOutputStream());             dos.writeUTF(messaggio);         } 
    catch (
    IOException e1) {                         
    e1.printStackTrace();         }                           
    // Al termine, chiude lo stream di comunicazione e il socket.            
    try {                
    dos.close();             
    br.close();             
    socket.close();         } catch (IOException e) {                          e.printStackTrace();         }                  
    System.out.println("Chiusura connessione effettuata");                      System.out.println("Attesa risposta...");               } } 
    server
    Codice PHP:
    public class server {     
    private 
    int port;     
    private 
    ServerSocket s_socket;     
    private 
    Socket c_socket;

    public 
    server(int port){         
    this.port port;         
    if(!
    startServer())         
    System.err.println("Errore durate la creazione del Server");     }          
    private 
    boolean startServer()      {       
    try      {        
    s_socket = new ServerSocket(port);          }       
    catch (
    IOException ex)       {        
    ex.printStackTrace();        
    return 
    false;       }       
    System.out.println("Server creato con successo!");       
    return 
    true;      }          
    public 
    void runServer()      {       
    while (
    true)       {        
    try        {         
    // Il server resta in attesa di una richiesta         
    System.out.println("Server in attesa di richieste...");         
    c_socket s_socket.accept();         
    System.out.println("Un client si e' connesso...");         
    ParallelServer pServer = new ParallelServer(c_socket);         
    Thread t = new Thread (pServer);         
    t.start();        }        
    catch (
    IOException ex)        {        
     
    ex.printStackTrace();        }       }      }          
    public class 
    ParallelServer implements Runnable      {       
    private 
    Socket c_socket;       
    public 
    ParallelServer (Socket c_socket)       {        
    this.c_socket c_socket;       }              
    public 
    void run()           {            
    try            { 
    // Ricava lo stream di output associate al socket e definisce una classe wrapper di tipo  BufferedWriter per semplificare le operazioni di scrittura                              String input = null;                              
    BufferedReader s_br = new BufferedReader(new inputStreamReader(c_socket.getInputStream()) );                                  
    input s_br.readLine();
                                                 
    System.out.println("Received:"+input); 
    s_br.close();         
    Random temperatura = new Random(); 
    temperatura.nextInt(41); 
    if(
    input.equals("PREVISIONE-TEMPERATURA"))
    System.out.println("PREV-METEO-PIPPO\n temperatura prevista"+temperatura);                     
    else
    System.out.println("errore");                                            System.out.println("Benvenuto sul server!\n");
    c_socket.close();             
    System.out.println("Chiusura connessione effettuata");            }    
    catch (
    IOException ex)            { 
    ex.printStackTrace();            } 
    catch (
    Exception e)            { 
    e.printStackTrace();            }           }            }     

    public static 
    void main(String[] args) {                  
    server s = new server(6799); 
    s.runServer();      }  } 
    Il problema che incontro è nel server quando faccio
    codice:
    System.out.println("Received:"+input);
    in quanto sulla console mi legge il messaggio inviato dal client però con 2 caratteri speciali all'inizio:
    Received: (qui ci sono i 2caratteri speciali)PREVISIONE-TEMPERATURA
    Preciso che il problema non si ripete invece nel client, ossia quando stampo il messaggio nel client viene visualizzato correttamente..
    Vi ringrazio in anticipo per la disponibilità.

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    258
    nessuno capace di aiutarmi?? forse ho postato troppo codice, xo speravo fosse piu chiaro cosi...

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 © 2025 vBulletin Solutions, Inc. All rights reserved.