|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Sep 2010
Messaggi: 29
|
[Java] Invio Files su socket
Ciao ragazzi , come promesso rieccomi , il mio client FTP con uso socket procede alla grande , ora leggo tutti i comandi che hanno risposta direttamente dal canale comandi ( 21 ) , il fatto è che ora dovrei fare in modo di uploadare qualcosa sul Server FTP , a questo punto pensavo una connessione ATTIVA , mi sembra la più facile da fare , ed ecco i primi porblemi , questo è il codice che uso nel caso il comando dato sia "send"
Codice:
if (cmd.equals("send")) { // Invio file tramite SEND cmd = "port 82,56,110,160,20,20"; // Setto la trasmissione attiva pw.println(cmd); mess = br.readLine(); System.out.println(mess); cmd = "type I"; pw.println(cmd); mess = br.readLine(); System.out.println(mess); cmd = "send"; pw.println(cmd); mess = br.readLine(); System.out.println(mess); while (br.ready()==true) { mess = br.readLine(); System.out.println(mess); } TransferThread transferthread = new TransferThread(); //costruttore thread transferthread.start(); } //fine IF Grazie mille in anticipo! |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
La apri normalmente come quando ti sei connesso al server! O non sono riuscito a capire io il dubbio che hai?
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Penso tu debba costruire e gestire una nuova Socket, dedicata appunto al canale per il trasferimento dei dati, che chiuderai al termine del trasferimento stesso.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
![]() |
![]() |
![]() |
#4 |
Junior Member
Iscritto dal: Sep 2010
Messaggi: 29
|
ok, è quello che pensavo anch'io , però ecco l'inghippo :
- La socket su cui lavoro è la 21 dell'host idnob.altervista.org --> Socket s = new Socket ("idnob.altervista.org" , 21 ); - I comandi su questa porta come il pwd ecc... funzionano , se ad esempio però mando un "list" o un "put" allora devo aprire una nuova porta sulla stessa connessione . Nel Thread facccio: Socket s1 = new Socket ("idnob.altervista.org",20); Mi dice che Connection Refused . Devo forse mettere in wait la socket s ? Gentili come al solito ragazzi! |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
|
è una connessione passiva? :E
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Ovviamente dovrai avere anche una ServerSocket in attesa sulla porta 20 sul server!
|
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
|
|
![]() |
![]() |
![]() |
#8 |
Junior Member
Iscritto dal: Sep 2010
Messaggi: 29
|
-E' una connessione passiva
-La serverSocket è sul server (per esempio di altervista) - Di librerie specifiche FTP ci sono quelle della sun , ma non le voglio usare proprio perchè le voglio fare io ( voglio capire il funzionamento ) in maniera molto rudimentale , ma funzionante ![]() Se do il comando "passive" , il server mi risponde con l'ip e la porta con la sintassi: ip,ip,ip,ip,numero1,numero2 --> numero1,numero2 servono direi per il calcolo della porta a cui connettersi , calcolandola tramite numero1*256+numero2 . Non capisco come connettermi all'host che vi dicevo sulla porta che abbiamo appena calcolato,cioè quella che il server ci ha dato per la connessione . |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
|
creando un altro socket
comunque rudimentale e funzionante non vanno d'accordo ![]() |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Ma la connessione sulla socket del server devi farla normalmente come qualsiasi altra socket! Però devi farla prima sulla ServerSocket, quindi il server dovrà avere una server socket in attesa sulla porta interessata!
|
![]() |
![]() |
![]() |
#11 |
Junior Member
Iscritto dal: Sep 2010
Messaggi: 29
|
- Se creo un'altra socket mi die che la connessione è rifiutata
@tuccio : la ferrari non è altro che una 127 con upgrade ![]() - La serverSocket non la controllo io , sono i server FTP di tutto il mondo che hanno la serverSocket in ascolto , io mi devo limitare a fare un client ftp. Direi che il server si mette in attesa sulla porta che mi comunica dopo il comando "passive". comunque adesso mi è venuta un idea , prendo la stringa che mi da il server , estrapolo l'ip , calcolo la porta e apro una nuova socket verso quell'ip e quella porta. Stasera vi dirò il risultato. Grazie mille per la pazienza e nel caso ci fossero nuove idee dite pure ![]() |
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#13 |
Junior Member
Iscritto dal: Sep 2010
Messaggi: 29
|
già , non sono stato preciso , scusate , devo solo fare il client funzionante con tutti gli N server FTP del mondo
![]() ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:36.