CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: carotix con ben 1 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: megthebest con ben 8 Thanks ricevuti negli ultimi sette giorni
Utente del mese: megthebest con ben 31 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 2 su 2
Discussione:

Problema ricezione file sul server tramite socket

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Androidiano


    Registrato dal
    Sep 2010
    Messaggi
    53

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Problema ricezione file sul server tramite socket

    Buongiorno.
    Ho un problema durante il trasferimento di un file presente sulla sd del mio dispositivo android dal dispositivo stesso al mio server (il mio pc) tramite comunicazione socket.

    Quello che faccio lato server è la seguente cosa:
     
    1
    2
    private final String SAVE_DIR = "C:/Users/Alberto/Documents";
    3
      private final int SERVER_PORT = 4444;
    4
    ServerSocket ss = new ServerSocket(SERVER_PORT);
    5
          System.out.println("Sono sulla " + ss);
    6
     
    7
          // ciclo infinito per accettare per sempre connessioni
    8
          for (;;) {
    9
              // prendo la connessione in ingresso
    10
              Socket s = ss.accept();
    11
              System.out.println("Conessione da " + s);
    12
             
    13
    14
              try {
    15
                     
    16
              BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
    17
              String str = in.readLine();
    18
    19
    if("TI INVIO LE QUANTITA COMPERATE".equals(str)){
    20
                     System.out.println("S: CLIENT DICE: '" + str + "'");
    21
                       //RICEZIONE NELLA CARTELLA DI LAVORO DEL FILE QUANTITATOSERVER.xml DAL
    22
                       //DISPOSITIVO MOBILE
    23
    24
                     ObjectInputStream oin = new ObjectInputStream(s.getInputStream());
    25
                     File inFile = (File) oin.readObject();
    26
                     File saveFile = new File(SAVE_DIR + "/" + inFile.getName());
    27
                     FileInputStream fis  = new FileInputStream(inFile);
    28
                     FileOutputStream fos = new FileOutputStream(saveFile);
    29
                     byte[] buf = new byte[1024];
    30
                     int i = 0;
    31
                     // riga per riga leggo il file originale per
    32
                     // scriverlo nello stram del file destinazione
    33
                     while((i=fis.read(buf))!=-1) {
    34
                         fos.write(buf, 0, i);
    35
                     }
    36
                     // chiudo gli strams
    37
                     fis.close();
    38
                     fos.close();
    39
               
    40
                     System.out.println(" --ricezione completata");
    41
                     
    42
                     
    43
                 }//Fine IF TI INVIO LE QUANTITA COMPERATE
    44


    Lato android invece lancio un thread all'istante che mi serve per inviare il file al dispositivo:
    43
     
    1
    2
    public class TCPClientQuantita implements Runnable {
    3
    4
            private final String SERVER_HOST = "192.168.0.107";
    5
            private final int SERVER_PORT = 4444;
    6
           
    7
           
    8
        public void run() {
    9
             try {
    10
    11
                         try {
    12
                             
    13
                             Socket socket = null;
    14
                             socket = new Socket(SERVER_HOST, SERVER_PORT);
    15
                             String message = "TI INVIO LE QUANTITA COMPERATE";
    16
                             PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);
    17
                              out.println(message);
    18
                             
    19
                             File sdcardDir = Environment.getExternalStorageDirectory();
    20
                             
    21
                             File myFile = new File(sdcardDir,"QUANTITATOSERVER.xml");
    22
                             ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
    23
                             oos.reset();
    24
                             oos.writeObject(myFile);
    25
                             oos.flush();
    26
                             oos.close();
    27
    28
                         Log.d("TCP", "C: Sent.");
    29
                         Log.d("TCP", "C: Done. DATI INVIATI!");
    30
                         
    31
                         
    32
                         
    33
                         
    34
                 } catch(Exception e) {
    35
                     Log.e("TCP", "S: Error", e);
    36
                          }
    37
             } catch (Exception e) {
    38
                  Log.e("TCP", "C: Error", e);
    39
             }
    40
             
    41
             
    42
        }//chiusura metodo run 
    43

    L'eccezione che mi capita è la seguente:

    java.io.FileNotFoundException: \mnt\sdcard\QUANTITATOSERVER.xml (Impossibile trovare il percorso specificato)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(Unknown Source)
    at Server.listen(Server.java:131)
    at Server.main(Server.java:44)

    dove
    at Server.listen(Server.java:131) -------------> FileInputStream fis = new FileInputStream(inFile);

    Il file è presente correttamente sulla sd.
    Non capisco il perchè mi generi questa eccezione.
    E' una giornata intera che ci sto sclerando sopra ma proprio non ne vengo fuori.
    Vi ringrazio ciao

  2.  
  3. #2
    Baby Droid


    Registrato dal
    Apr 2011
    Messaggi
    27

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Ciao a tutti.. il post è un po' vecchio.. spero vada bene continuare qua.

    Io ho esattamente lo stesso problema.. è ci sto perdendo la mattinata...

    Qualcuno sa dirmi dove sbaglio?
    Grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy