Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    21

    protocollo FTP

    Salve,
    Mediante un microcontrollore collegato ad un modem gprs effettuo la connessione ad un server per trasferire in FTP un file di testo.
    Non riesco a trovare quale sia il carattere di chiusura del trasferimento file.
    Anche non mettendolo il testo viene trasferito ma il server non chiude il file suito ma dopo un timeout ... credo
    Qualcuno sa aiutarmi sulla sintassi esatta prevista dal protocollo?
    Grazie

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Qual è il linguaggio di riferimento?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    21
    Non e' importante questo.
    La mia domanda si riferisce al protocollo FTP.
    Mi connetto al server come fosse telnet.
    Il mio problema e' la fine della procedura di creazione del file di testo nel server in passive mode.
    In pratica con la sessione telnet si puo' provare aprendo il primo soket sulla porta 21 e il secondo su quella data dal server in modalita' passiva (comando PASV).
    Io lo effettuo tramite un microcontrollore ma la procedura e' applicabile con un semplice terminale.
    Spero di essere stato chiaro nel problema e di non aver sbagliato area del furum.
    Grazie

  4. #4
    Salve,
    Mediante un microcontrollore collegato ad un modem gprs effettuo la connessione ad un server per trasferire in FTP un file di testo.
    ok
    Non riesco a trovare quale sia il carattere di chiusura del trasferimento file.
    Non esiste nessun "carattere di chiusura" per segnalare la fine del trasferimento.
    Nel caso in cui tu stia scaricando dal server sarà il server stesso che alla fine del trasferimento chiuderà la connessione dati e ti notificherà l'interruzione del trasferimento inviandoti una risposta sul canale comandi (226, se il file è stato trasmesso per intero, altrimenti 426).
    Nel caso in cui tu stia uploadando (da client a server) quando avrai terminato di mandare tutti i dati dovrai essere tu stesso a chiudere il canale dati e in seguito a tale azione riceverai una risposta del tipo 226 sul canale comandi.

    Mi connetto al server come fosse telnet.
    Il mio problema e' la fine della procedura di creazione del file di testo nel server in passive mode.
    In pratica con la sessione telnet si puo' provare aprendo il primo soket sulla porta 21 e il secondo su quella data dal server in modalita' passiva (comando PASV).
    Non capisco come utilizzi le due sessioni telnet...
    Con la prima ti connetti al canale dati, esegui PASV per sapere su che porta sarà in ascolto il canale dati e successivamente apri un secondo telnet col quale ti connetti al canale dati? Tutto questo manualmente?
    Lo trovo un po' scomodo.
    Puoi semplificarti di molto la vita operando da un singolo, semplice, script.
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    21
    Originariamente inviato da billiejoex
    ok

    Non esiste nessun "carattere di chiusura" per segnalare la fine del trasferimento.
    Nel caso in cui tu stia scaricando dal server sarà il server stesso che alla fine del trasferimento chiuderà la connessione dati e ti notificherà l'interruzione del trasferimento inviandoti una risposta sul canale comandi (226, se il file è stato trasmesso per intero, altrimenti 426).
    Nel caso in cui tu stia uploadando (da client a server) quando avrai terminato di mandare tutti i dati dovrai essere tu stesso a chiudere il canale dati e in seguito a tale azione riceverai una risposta del tipo 226 sul canale comandi.


    Non capisco come utilizzi le due sessioni telnet...
    Con la prima ti connetti al canale dati, esegui PASV per sapere su che porta sarà in ascolto il canale dati e successivamente apri un secondo telnet col quale ti connetti al canale dati? Tutto questo manualmente?
    Lo trovo un po' scomodo.
    Puoi semplificarti di molto la vita operando da un singolo, semplice, script.
    Hai centrato il punto billiejoex,
    ti spiego ... la procedura manuale e' molto scomoda, ma e' quella che un sistema a microcontrollore dotato di modem (che non ha sistema operativo) puo' eseguire svolgendo i comandi base del protocollo.
    Il processo che svolge e' di collegarsi al server sulla porta 21 e quindi di controllo, impostare la directory, il passive mode (ottenendo la porta di collegamento per i dati da scaricare) ed effettuare uno STOR di dati ascii.
    Quando apro la sessione dati e invio le stringhe (upload effettuo) devo chiudere tale sessione per avere la risposta 226 che dicevi sul socket di controllo.
    Quello che non sto trovando e' lcome chiudere tale porta per chiudere il file e avere il 226 di risposta.
    Se non lo faccio lo fa il server dopo un certo tempo che credo sia un time out, ma il file non e' subito disponibile, ed e' un problema.
    Spero di essere stato chiaro.
    Credo ci sia una sequenza di caratteri ascii che eseguiti chiudono il socket e di conseguenza il file.
    Grazie

  6. #6
    Hai centrato il punto billiejoex,
    ti spiego ... la procedura manuale e' molto scomoda, ma e' quella che un sistema a microcontrollore dotato di modem (che non ha sistema operativo) puo' eseguire svolgendo i comandi base del protocollo.
    Mi continua a sfuggire il contesto. Fammi capire: sei tu che "a mano" apri un terminale telnet, digiti i comandi, ne apri un altro, ti connetti, ecc...?

    Il processo che svolge e' di collegarsi al server sulla porta 21 e quindi di controllo, impostare la directory, il passive mode (ottenendo la porta di collegamento per i dati da scaricare) ed effettuare uno STOR di dati ascii.
    Upload, quindi. Ok.

    Quando apro la sessione dati e invio le stringhe (upload effettuo) devo chiudere tale sessione per avere la risposta 226 che dicevi sul socket di controllo.
    Quello che non sto trovando e' lcome chiudere tale porta per chiudere il file e avere il 226 di risposta.
    Parlando "a bassi livelli" tecnicamente ti basta chiudere il socket del canale dati (aka chiudere la connessione).
    Parlando "a livelli beceri", in pratica, basta anche che chiudi brutalmente il terminale che usi per il canale dati.

    Credo ci sia una sequenza di caratteri ascii che eseguiti chiudono il socket e di conseguenza il file.
    No, gli unici caratteri ASCII con cui puoi avere a che fare, nel protocollo FTP, riguardano il canale comandi, non quello dati. Anche se questo tecnicamente non è del tutto vero non è cmq il tuo caso.
    Dopo aver mandato il comando "STOR" non dovrai mandare nessuno comando, sul canale comandi, che segnali al server la fine del trasferimento.
    Come ripeto, tale stato lo notifichi unicamente chiudendo il canale dati.
    Convengo che un comportamento più sensato, per il protocollo, sarebbe quello di appoggiarsi ad un comando specifico, ma questo è FTP. Il suo design è di quanto più scandaloso ci possa essere... per non parlare, poi, della qualità dell'RFC... Da suicidio...
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Originariamente inviato da kiteman
    Non e' importante questo.
    Non è importante, o non c'è. Se stai lavorando con un linguaggio di programmazione, specificalo. In caso contrario, essendo nel forum di Programmazione, non sei nel luogo adatto.

    Ti colleghi esclusivamente con Telnet o stai usando un altro software?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    21
    Originariamente inviato da billiejoex
    Mi continua a sfuggire il contesto. Fammi capire: sei tu che "a mano" apri un terminale telnet, digiti i comandi, ne apri un altro, ti connetti, ecc...?


    Upload, quindi. Ok.


    Parlando "a bassi livelli" tecnicamente ti basta chiudere il socket del canale dati (aka chiudere la connessione).
    Parlando "a livelli beceri", in pratica, basta anche che chiudi brutalmente il terminale che usi per il canale dati.


    No, gli unici caratteri ASCII con cui puoi avere a che fare, nel protocollo FTP, riguardano il canale comandi, non quello dati. Anche se questo tecnicamente non è del tutto vero non è cmq il tuo caso.
    Dopo aver mandato il comando "STOR" non dovrai mandare nessuno comando, sul canale comandi, che segnali al server la fine del trasferimento.
    Come ripeto, tale stato lo notifichi unicamente chiudendo il canale dati.
    Convengo che un comportamento più sensato, per il protocollo, sarebbe quello di appoggiarsi ad un comando specifico, ma questo è FTP. Il suo design è di quanto più scandaloso ci possa essere... per non parlare, poi, della qualità dell'RFC... Da suicidio...
    Rispondo....

    Mi continua a sfuggire il contesto. Fammi capire: sei tu che "a mano" apri un terminale telnet, digiti i comandi, ne apri un altro, ti connetti, ecc...?

    Per provare la sequenza faccio a mano con telnet, ma poi implemento nel sistema automatico, come detto gestito da un microcontrollore ....

    Parlando "a bassi livelli" tecnicamente ti basta chiudere il socket del canale dati (aka chiudere la connessione).

    Chiudere la sessione dati, questo e' il problema. Si chiude da sessione dati o comandi? e come se non avessi, con il sistema automatico, la possibilita' di chiudere il terminale con sistema "becero"
    Se provi con telenet aprendo le due sessioni capisci il mio problema...
    inviati i dati sul socket dati, come fare per chiuderlo mediante un comando che deve pur esserci? Bisognerebbe vedere come fanno i programmi di trasferimento ftp :rollo: ma non sono riuscito...
    Grazie

  9. #9
    Chiudere la sessione dati, questo e' il problema. Si chiude da sessione dati o comandi?
    Aridaje! Devi chiudere il canale dati (quello a cui ti connetti col "secondo telnet").

    e come se non avessi, con il sistema automatico, la possibilita' di chiudere il terminale con sistema "becero"
    Capisco il tuo problema. Ma per forza telnet devi usare? Io non so come sia questo microcontrollore. Non ha un client ftp? Non puoi fargli girare del codice? Uno script... qualunque cosa che non sia telnet?
    Telnet non è adatto per fare questo genere di cose.

    inviati i dati sul socket dati, come fare per chiuderlo mediante un comando che deve pur esserci? Bisognerebbe vedere come fanno i programmi di trasferimento ftp
    Aridaje! (e 3 :-))
    Tutti i client FTP fanno esattamente come ho detto su: finito il trasferimento verso il server chiudono il canale dati. Fine.
    In FTP non esiste nessun comando esplicito che notifichi la fine del trasferimento in questo senso.
    Esiste ABOR ma serve per altri scopi, senza contare che ha una semantica particolare.
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    21
    Originariamente inviato da billiejoex
    Aridaje! Devi chiudere il canale dati (quello a cui ti connetti col "secondo telnet").


    Capisco il tuo problema. Ma per forza telnet devi usare? Io non so come sia questo microcontrollore. Non ha un client ftp? Non puoi fargli girare del codice? Uno script... qualunque cosa che non sia telnet?
    Telnet non è adatto per fare questo genere di cose.


    Aridaje! (e 2 :-))
    Tutti i client FTP fanno esattamente come ho detto su: finito il trasferimento verso il server chiudono il canale dati. Fine.
    In FTP non esiste nessun comando esplito che notifichi la fine del trasferimento in questo senso.
    Esiste ABOR ma serve per altri scopi, senza contare che ha una semantica particolare.
    billiejoex, il problema e' solo uno COME LO CHIUDO STO CANALE DATI???? COCE GLI DICO HO FINOTO ... CHIUDI, deve esserci un modo, altrimenti il file resta aperto e lo chiude il server dopo tempo. Se fai la prova te ne accorgi.
    Telnet e' solo un modo per dialogare a basso livello con un server ma il mio problema e' chiudere quel canale dati facendo capire al server che ho finito di mandare i caratteri.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.