Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Inviare file

    Questo è un pezzo della parte Client di un programmino java per inviare file... [scusate la formattazione]
    Ma funziona solo per i file di testo (non per immagini, file audio...)
    Ho provato ad usare FileInputStream ma niente da fare...
    I file (non di testo) che invia hanno la stessa dimensione solo che all'interno alcuni byte risultano diversi, ecco perchè il file inviato risulta non funzionante.

    Come posso risolvere?
    codice:
    public void run() {
       
            Socket echoSocket = null;
            PrintWriter out = null;
           // BufferedReader in = null;
            InputStream in = null;
            FileOutputStream out_f = null;
          //  long dim2=0;
                
        	int port = Integer.parseInt(Tporta);
    
        	try {
                	echoSocket = new Socket(ip, port);  	    
                    out = new PrintWriter(echoSocket.getOutputStream(), true);
                   // in = new BufferedReader(new InputStreamReader(echoSocket.getInputStream()));
                    in = echoSocket.getInputStream();
                    
                } 
        	catch (UnknownHostException e) {
                   System.err.println("Non conosco l'host");
                   System.exit(1);
                } 
        	catch (IOException e) {
                    System.err.println("Non posso ottenere I/O per la connessione con: localhost");
                    System.exit(1);
                }
            
        		out.println(filename);
        		out.flush();
        		File outputFile = new File(shareFolder + "//" + "_INCOMPLETE_" + filenew);
        		File overFile = new File(shareFolder + "//" + filenew);
        		
        		try {
        			out_f = new FileOutputStream(outputFile);
        			//dim2 =Long.parseLong(in.readLine());
        			// dim2 =in.read();
        			} 
    			catch (IOException e) {
    				e.printStackTrace();
    			}
        		
        		vecchio.setText(nuovo.getText());
                nuovo.setText("Download del file: " + filenew + "  :  " + dim);
                
                
        		 
        			try {
        				//for(int k=0; k<dim2; k++) 
        				//	out_f.write(in.read());
        				int c;
        				while ((c=in.read())!=-1) { out_f.write(c); } 
        				} 
        			catch (IOException e) {
    					e.printStackTrace();
        				}
        	    	
        			try {
        	    		out_f.close();
        	    		out.close();
        	    		in.close();
        	    		echoSocket.close();
        				} 
        	    	catch (IOException e) {
        				
        				e.printStackTrace();
        			}
    questa è la relativa parte Server
    codice:
    	public void run(){
    	try {
    		InputStream i = client.getInputStream();
    		OutputStream o = client.getOutputStream();
    		in = new BufferedReader(new InputStreamReader(i));
    		output = new PrintWriter(o);
    		String s = null;
    			s = shareFolder + "\\" + in.readLine();
    			System.out.println(s);
    			File inputFile = new File(s); 
    			FileInputStream in_f = new FileInputStream(inputFile); 
            	      int c; 
            		while ((c = in_f.read()) != -1 ) { output.write(c); output.flush();}
    			//long dim = inputFile.length();
    			//output.println(dim);
    			output.flush();
    		    //	for(int k=0; k<inputFile.length(); k++){
    			//		output.write(in_f.read());	
    			//		output.flush();
    			//	}
    			in_f.close(); 
    				
            } catch (Exception e) 	{
    		System.out.println("Errore");
    		System.exit(1);
    	}  finally {
    		System.out.println ("Connessione chiusa");
    		try {
    			client.close();
    		} catch (Exception e) {
    			System.exit(1);
    		}
            }	
          }
    
    }
    grazie a tutti
    Arianna Microchip
    FreePlayClub

  2. #2
    ho risolto....

    qui raramente risponde qualcuno, ma magari qualcuno vuole saperlo e quindi dico come ho risolto.

    Ovviamente non dovevo usare un int (int c) ma byte.
    Prima calcolo la dimensione del file da inviare ed poi proseguo con l'invio (in byte) finchè non raggiungo la dimensione calcolata (del file originale)
    Arianna Microchip
    FreePlayClub

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.