PDA

Visualizza la versione completa : STOR di ftp via telnet..


osvi
03-09-2005, 22:48
sto cercando come cavolo funziona l'invio di un file via ftp :stordita:

allora:

-apro $socket
-leggo 220 ciao
-scrivo USER x
-leggo 331 user ok
-scrivo PASS y
-leggo 230 ma sciau :zizi:

-scrivo PASV
-leggo 227 e mi ricavo la porta per la connessione passiva

-creo $socket2 sulla porta di pasv

se faccio un LIST su $socket, da $socket2 posso leggere la lista dei file (per dire, tutto funziona bene)
ma lo stor come funziona?

ho provato

-scrivo STOR test.txt e leggo "150 ok"
-leggo il file su disco e lo scrivo su $socket2
-leggo $socket e vedo "226 file scritto con successo"

vado a vedere dal browser, ed il file si esiste, ma Ŕ vuoto :cry: :cry:

come mai?

osvi
03-09-2005, 22:52
ah direte "e con reti?"
ho visto questo thread.. http://forum.html.it/forum/showthread.php?threadid=797702 :fagiano:

osvi
05-09-2005, 20:44
up

osvi
08-09-2005, 20:18
su

dvds
08-09-2005, 20:41
provato con ethereal o altro soft simile a guardare cosa passa? :fagiano:

osvi
08-09-2005, 21:09
ovviamente si ma c'ho capito poco del traffico analizzato

Habanero
09-09-2005, 21:18
mah a me funziona...

in modalitÓ passiva la procedura dovrebbe essere questa:


client: PASV
server: manda "227 Entering Passive Mode (a1,a2,a3,a4,p1,p2)" dove gli 'ai' sono l'IP e p1,p2 la solita porta
client: STOR nomefile
client: si collega al server sulla porta p1*256+p2 per la connessione dati
server: manda sul canale comandi "150 connessione accettata..."
client: manda il file sul canale dati
client: chiude il canale dati
server: manda sul canale comandi "226 file trasferito con successo"


Come fai il test?

osvi
09-09-2005, 22:02
:cry: :cry: :cry: :cry:

era un problema demente della lettura del file :cry:

ora faccio


scrivi("STOR file.txt", $socket);
leggi("150", $socket);

$handle = fopen("file.txt", "r");
$contents = fread($handle, "4096");
fclose($handle);

socket_write($socket2, $contents);
socket_close($socket2);
leggi("226", $socket);

e ok il file lo invia, perchŔ sono 40 byte
ma se ho un file tipo di un mega aumento il buffer o cosa? :stordita:

osvi
09-09-2005, 22:06
$contents = '';
while (!feof($handle)) {
$contents .= fread($handle, 8192);
}

proviamo subito :yuppi:

Habanero
10-09-2005, 03:17
beh in genere il buffer non puo' sempre essere maggiore della lunghezza del file....

Se il file Ŕ pi¨ grande devi leggerlo a pezzi di grandezza max pari al buf e a pezzi spedirlo sulla rete. Fai un ciclo finchŔ arrivi alla fine del file

Loading