codice:
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.UnknownHostException;
import javax.swing.JFileChooser;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

    
/**
 *
 * @author ste
 */
public class TFTP_Client {
    
    DatagramSocket dataSocket;
    DatagramPacket dataPacket;
    
    String nome;
    long dimensione;
    private InetAddress indirizzoServer;
    private int porta;
    
    public void Start() throws IOException {
            
            porta = 9876;
            indirizzoServer = InetAddress.getByName("127.0.0.1");  
        
            JFileChooser fileChooser = new JFileChooser();
            int n = fileChooser.showOpenDialog(null);
            File file = fileChooser.getSelectedFile(); 
            String path_file = file.getAbsolutePath();
            nome = file.getName();
            dimensione = file.length();
       
            //System.out.println("Il nome del fileselezionato è: " +nome);
            System.out.println("La sua dimensione :  " +dimensione+ " byte");
            System.out.println("Percorso: " +path_file);
            
            invia_Nome(nome);
            invia_File(file, nome );
    }
    
    private void invia_File(File file, String nome) throws IOException {
        System.out.println("*** Inizio invio file");
    
        try {
            dataSocket = new DatagramSocket();
            byte[] buf = new byte[1024];
            int read,tot=0;
            FileInputStream inputStream = new FileInputStream(file);
            dataPacket = new DatagramPacket (buf, buf.length, indirizzoServer, porta);
            
            // INVIO I PACCHETTI 
            while ((read = inputStream.read(buf)) != -1 ){
                tot += read;
                System.out.println("  - "+tot+ " byte");
                dataSocket.send(dataPacket);
            }
            System.out.println("*** FILE INVIATO CON SUCCESSO ***");    
        } catch (FileNotFoundException e) {
            e.printStackTrace();    
        }
        
    }   // FINE INVIA_FILE   

    private void invia_Nome(String nome) throws IOException {
        
        dataSocket = new DatagramSocket();
        String nome_file = nome;
        System.out.println("Il nome del file è: " +nome_file);
        byte [] name = {0};
        name  = nome_file.getBytes();
        dataPacket = new DatagramPacket (name, name.length, indirizzoServer, porta);
        dataPacket.setData(name);
        dataPacket.setLength(name.length);
        
        // INVIO DEL PACCEHTTO SUL SOCKET
        dataSocket.send(dataPacket);
    }// FINE INVIA NOME
    
   
    
    

    public static void main(String[] args) throws IOException
        {
            TFTP_Client tftpClient = new TFTP_Client();
            tftpClient.Start();
        }

    

    

    
}