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

    [java] Trasferimento file socket server-client

    Scusate ho preparato questi due piccoli programmini per trasferire tramite rete un file, uno è un server:

    codice:
    /**
     * @(#)Server.java
     *
     *
     * @author 
     * @version 1.00 2007/6/7
     */
    import java.io.*;
    import java.net.*;
    
    public class Server {
            
        /**
         * Creates a new instance of <code>Server</code>.
         */
        public Server() {
        }
        
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
           File f = new File("sfondo.gif");
           int dimension = (int)f.length();
           byte []data = new byte[dimension];
           try
              {
               while(true)
               {
                FileInputStream fis = new FileInputStream(f);
                ServerSocket s1 = new ServerSocket(10000);
                Socket s = s1.accept();
                DataOutputStream opt = (DataOutputStream)s.getOutputStream();
           	    fis.read(data, 0, dimension-1);
           	    opt.write(data, 0, dimension-1);
                opt.close();
                s1.close();
                fis.close();
               }  
              }
              catch(Exception e ){}
              
        }
    }
    e un client per riceverlo:

    codice:
    /**
     * @(#)Client.java
     *
     *
     * @author 
     * @version 1.00 2007/6/7
     */
    import java.io.*;
    import java.net.*;
    
    public class Client {
            
        /**
         * Creates a new instance of <code>Client</code>.
         */
        public Client() {
        }
        
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
          try{
          FileOutputStream fos = new FileOutputStream("FileRicevuto");
          Socket s = new Socket("127.0.0.1",10000);  
          DataInputStream dis = (DataInputStream)s.getInputStream();
          int b;
          while((b = dis.readInt())!=-1)
          {
          	System.out.println(b);
          	fos.write(b);
          }
          dis.close();
          fos.close();
          s.close();
          }
          catch(Exception e){
          }
        }
    }

    ma non funziona, il client sembra copiare byte a byte (al momento la scelta è voluta) peò nello streaming in uscita ovvero nel file non scrive nulla.

    Qualcuno ha idea di cosa accada?

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    92
    Va bhè problema risolto.

    Il mio fine e di poter regolare la banda passante per il file, in poche parole non voglio che venga inviato tutto insieme, o almeno che venga regolata la velocità di download.

    ecco il codice se può interessate:

    per il server:
    codice:
    /**
     * @(#)Server.java
     *
     *
     * @author 
     * @version 1.00 2007/6/7
     */
    import java.io.*;
    import java.net.*;
    
    public class Server {
            
        /**
         * Creates a new instance of <code>Server</code>.
         */
        public Server() {
        }
        
        /**
         * @param args the command line arguments
         */
        public static void main(String argv[]) {
           File f = new File("compleanno.avi");
           int dimension = (int)f.length();
           byte []data = new byte[dimension];
           try
              {
               while(true)
               {
                FileInputStream fis = new FileInputStream(f);
                ServerSocket s1 = new ServerSocket(80);
                Socket s = s1.accept();
                DataOutputStream opt = new DataOutputStream(s.getOutputStream());
           	    fis.read(data, 0, dimension);
           	    opt.write(data, 0, dimension);
                opt.close();
                s1.close();
                fis.close();
               }  
              }
              catch(Exception e ){}   
        }
    }
    e il client:
    codice:
    /**
     * @(#)Client.java
     *
     *
     * @author 
     * @version 1.00 2007/6/7
     */
    import java.io.*;
    import java.net.*;
    
    public class Client {
            
        /**
         * Creates a new instance of <code>Client</code>.
         */
        public Client() {
       
        }
        
        /**
         * @param args the command line arguments
         */
        public static void main(String argv[]) {
          try{
          FileOutputStream fos = new FileOutputStream("FileRicevuto.gif");
          Socket s = new Socket("82.59.87.230",80); 
          DataInputStream dis = new DataInputStream(s.getInputStream());
          byte b[] = new byte[1024];
          while(dis.read(b)!=-1)
          {
          fos.write(b);
          }
          
          dis.close();
          fos.close();
          s.close();
          }
          catch(Exception e){
          }
        }
    }
    Spero possa essere di aiuto a qualcuno. I miei saluti!

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.