Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    13

    [JAVA] errori implementazion server e client

    ciao a tutti!!!
    premetto che sono alle prime armi con java....
    mi sono appena iscritta e sono disperata perchè devo consegnare una tesina e anche se ho provato di tutto i programmi continuano a darmi errori...
    Praticamente devo implementare un client che invia una sequenza di numeri raccolti in un vettore e li invia al server il quale riconosce i numeri pari, li elimina e li rimanda al client.
    Questo è il codice del server :
    codice:
    import java.io.*; 
    import java.net.*; 
    import java.util.*;
    import java.lang.*;
    
    class TCPServer { 
      public static void main(String argv[]) throws Exception 
       { 
          String clientSentence;  String capitalizedSentence; 
    	int value,i;
    	
          ServerSocket welcomeSocket = new ServerSocket(6666); 
      
          while(true) { 
                Socket connectionSocket = welcomeSocket.accept(); 
               BufferedReader inFromClient =  new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
     	   DataOutputStream  outToClient = new DataOutputStream(connectionSocket.getOutputStream()); 
    	   System.out.println("Inserisci il numero desiderato");
                clientSentence = inFromClient.readLine(); 
               // capitalizedSentence = clientSentence.toUpperCase() + '\n';  
               try{
               value = clientSentence.Integer.parseInt();
               
               if (value % 2 == 0)
                   System.out.println("Il numero è pari");
               else
                   System.out.println("Il numero è dispari");
           }
           catch(Exception e){
               System.out.println("Errore " + e + " in input");
               System.exit(0);
           }
    
              outToClient.writeBytes(value); 
           }
        }
    }
    che quando compilo mi dà i seguenti errori:

    serverST.java:22: cannot find symbol
    symbol : variable Integer
    location: class java.lang.String
    value = clientSentence.Integer.parseInt();
    ^
    serverST.java:34: writeBytes(java.lang.String) in java.io.DataOutputStream cannot be applied to (int)
    outToClient.writeBytes(value);
    ^
    2 errors

    e questo è il codice client:
    codice:
    import java.io.*; 
    import java.net.*; 
    import java.lang.*;
    
    class TCPClient { 
        
    	public static void main(String argv[]) throws Exception 
        {          
    	String sentence;  String modifiedSentence;
    	int vet[]  = new int[11];
            BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); 
            Socket clientSocket = new Socket("127.0.0.1", 6666); 
            DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream()); 
                 sentence = inFromUser.readLine();
    	
    	for(int i=1;i<=10;i++)
                {
                try{
                        System.out.println("Inserisci il "+i+" numero");
                        vet[i]=Integer.parseInt(sentence.readLine());
                }
                catch(Exception e){
                      System.out.println("errore");
                }
    
    	}
            
    	for(int j=1;j<=10;j++)
    	outToServer.write(vet[j]);   
    	     
            BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); 
     
             modifiedSentence = inFromServer.readLine(); 
    
             System.out.println("FROM SERVER: " + modifiedSentence);      
          clientSocket.close();            
    
        }  }
    che quando compilo mi da i seguenti errori:

    clientST.java:20: cannot find symbol
    symbol : method readLine()
    location: class java.lang.String
    vet[i]=Integer.parseInt(sentence.readLine());
    ^
    1 error

    Come faccio???
    qualsiasi consiglio per implementare in maniera diversa il codice è ben accetto

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: [JAVA] errori implementazion server e client

    Originariamente inviato da liacv
    che quando compilo mi da i seguenti errori:

    clientST.java:20: cannot find symbol
    symbol : method readLine()
    location: class java.lang.String
    vet[i]=Integer.parseInt(sentence.readLine());
    ^
    1 error

    Come faccio???
    Stai chiamando il metodo readLine() su un oggetto di classe String. E nella classe String non esiste tale metodo...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3

    Re: [JAVA] errori implementazion server e client

    Originariamente inviato da liacv
    ciao a tutti!!!
    premetto che sono alle prime armi con java....
    mi sono appena iscritta e sono disperata perchè devo consegnare una tesina e anche se ho provato di tutto i programmi continuano a darmi errori...
    Praticamente devo implementare un client che invia una sequenza di numeri raccolti in un vettore e li invia al server il quale riconosce i numeri pari, li elimina e li rimanda al client.
    Questo è il codice del server :

    codice:
    ...
               value = clientSentence.Integer.parseInt();
               outToClient.writeBytes(value);
    Correzioni:
    Il modo giusto per convertire una stringa in un intero è il seguente
    codice:
    Integer.parseInt(clientSentence);
    Mentre writeBytes() è definito solo per oggetti di classe String


    Originariamente inviato da liacv
    codice:
          vet[i]=Integer.parseInt(sentence.readLine());
    non è definito alcun metodo readLine nella classe String!

    Ti basta scrivere:
    codice:
    vet[i]=Integer.parseInt(sentence);
    Originariamente inviato da liacv
    Come faccio???
    qualsiasi consiglio per implementare in maniera diversa il codice è ben accetto
    Io ti consiglio di usare i flussi di oggetti:
    ObjectOutputStream e ObjectInputStream, in modo tale da favorire lo scambio dell'intero array/vettore tra client e server.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    13
    Grazieeeeeeeeeeeee VincenzoTheBest ora non mi da più errori anche se devo cambiare alcune cose poichè il programma non fa quello che dovrebbe....comunque ora ho capito come trattare i numeri!!!
    proverò anche a seguire il tuo consiglio di usare i flussi di oggetti

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    13
    ho un altro problema
    voglio eliminare i numeri pari....per eliminare esiste solo la funzione remove()???
    ho visto che remove viene utilizzata con il metodo Iterator...se io volessi fare una cosa del genere:
    codice:
    for(int i=1;i<=5;i++){
    try{
         vet[i]=Integer.parseInt(clientSentence);
          if (vet[i] % 2 == 0)
          vet[i].remove();
    }
        catch(Exception e){
               System.out.println("Errore " + e + " in input");
               System.exit(0);
           }
    
    }
    so che vet[i].remove() non esiste....ma volevo sapere se esiste un modo per fare in questo modo senza usare Iterator!!!
    grazie in anticipo

  6. #6
    Originariamente inviato da liacv
    ho un altro problema
    voglio eliminare i numeri pari....per eliminare esiste solo la funzione remove()???
    ho visto che remove viene utilizzata con il metodo Iterator...se io volessi fare una cosa del genere:
    codice:
    for(int i=1;i<=5;i++){
    try{
         vet[i]=Integer.parseInt(clientSentence);
          if (vet[i] % 2 == 0)
          vet[i].remove();
    }
        catch(Exception e){
               System.out.println("Errore " + e + " in input");
               System.exit(0);
           }
    
    }
    so che vet[i].remove() non esiste....ma volevo sapere se esiste un modo per fare in questo modo senza usare Iterator!!!
    grazie in anticipo
    Hai diverse soluzioni tra cui scegliere per l'implementazione:
    - riallocazione: scandisci l'array, se trovi un numero pari riallochi l'array senza quell'elemento (che a questo punto assume una lunghezza pari a: lunghezza_array_ricevuto-1);
    - nuova istanziazione: ti avvali di una funzione che contando i numeri pari nell'array ne istanzia uno nuovo di lunghezza pari a: lunghezza_array_ricevuto - tot_num_numeri_pari, poi scandisci nuovamente l'array ricevuto e inserisci nel nuovo array solo i numeri dispari.

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    13
    la riallocazione si effettua in questo modo????
    codice:
    for(int i=1;i<=5;i++){
    	try{
    	vet[i]=Integer.parseInt(clientSentence);
    	if(vet[i] % 2 == 0){
    	int temp[] = new int[vet.length-1];
    	System.arraycopy(vet, i, temp, i, vet.length);
    	vet=temp;}
    
    	}
    	catch(Exception e){
               System.out.println("Errore " + e + " in input");
               System.exit(0);
           }
    non mi da errori ma non mi elimina niente.....dove sbaglio???

  8. #8
    Originariamente inviato da liacv
    codice:
    	vet[i]=Integer.parseInt(clientSentence);
    Questo assegnamento non ha senso, in quanto la traccia richiede che i numeri, prima di essere inviati al server, vengano raccolti in un array nell'applicazione/processo del client. Dunque il server deve lavorare su un array di numero già costituito da numeri.

    Originariamente inviato da liacv
    la riallocazione si effettua in questo modo????
    codice:
    	System.arraycopy(vet, i, temp, i, vet.length);
    Non basta! Dovresti fare una cosa del genere:
    codice:
    for(int i = 0; i < vet.length; i++){
      if( vet[i]%2 == 0 ){
         //shift a sinistra degli elementi
         for(int j = i; j < vet.length-1; j++){
             vet[j] = vet[j+1];
         }
         int temp[] = new int[vet.length - 1];
         System.arraycopy(vet, 0, temp, 0, temp.length);
         vet = temp;
      }
    }
    Altrimenti più semplicemente adotti la soluzione alternativa.

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    13
    intanto grazie
    poi vorrei chiedere un'ultima cosa...prometto che è l'ultima XD
    come faccio a far leggere al server un array che proviene dal client se non so la dimensione???
    nel senso...il client eseguendo un ciclo for scrive sul flusso di output...ora il server deve leggere da quello stesso flusso ma non sa la dimensione dell'array...quindi che funzione devo usare???
    non so se mi sono spiegata bene.....

  10. #10
    Originariamente inviato da liacv
    intanto grazie
    poi vorrei chiedere un'ultima cosa...prometto che è l'ultima XD
    come faccio a far leggere al server un array che proviene dal client se non so la dimensione???
    nel senso...il client eseguendo un ciclo for scrive sul flusso di output...ora il server deve leggere da quello stesso flusso ma non sa la dimensione dell'array...quindi che funzione devo usare???
    non so se mi sono spiegata bene.....
    Secondo quello che sta scritto nel tuo primo post il client dovrebbe inviare l'array già formato al server, quindi non vedo dov'è il problema.

    Ad esempio dal client "parte" un array lungo 10 celle, ed il server accedendo alla proprietà lenght di quell'array saprà che deve lavorare su un array lungo appunto 10 celle.

    Poi non so se l'esercizio ti da la libertà di optare per un struttura lineare tra le tante esistenti (array, vettori dinamici, liste e quant'altro).

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.