Ciao a tutti... Ho un piccolo problema con un piccolo interrogatore di Server che sto realizzando. Premetto che ho già guardato su tutti i possibili siti una possibile realizzazione, ho provato in tutti i modi, con le socket e qualsiasi altra cosa. Il tutto funziona con la porta 80 su qualsiasi normale sito internet (google ecc.). Se passo ad FTP invece... la risposta è sempre la stessa da qualsiasi sito ftp con cui provi a dialogare: "URI richiesto non valido per questo comando FTP".
Ho trovato un modo di procedere che riesce a far funzionare almeno il comando NLST (WebRequestMethods.Ftp.ListDirectory), il seguente:
codice:
WebRequest request = WebRequest.Create(host);
((FtpWebRequest)request).KeepAlive = false;
((FtpWebRequest)request).UseBinary = true;
((FtpWebRequest)request).UsePassive = false;
request.Method = WriteFtpMethods(); //questa funzione restituisce un metodo fra quelli proposti dal framework (WebRequestMethods.Ftp.UploadFile, WebRequestMethods.Ftp.DownloadFile, WebRequestMethods.Ftp.ListDirectory, WebRequestMethods.Ftp.MakeDirectory ecc.)
request.Credentials = new NetworkCredential(username, password);
WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
byte[] buffer = new byte[20];
char[] line = new char[20];
StringBuilder builder = new StringBuilder();
int nByte = 0;
while ((nByte = stream.Read(buffer, 0, 20)) != 0)
{
line = new char[20];
for (int i = 0; i < nByte; i++)
{
line[i] = (char)buffer[i];
}
builder.Append(new string(line));
}
stream.Close();
response.Close();
//.... scrittura del valore del builder ecc. ecc.
L'host ho provato ad inserirlo nei seguenti modi:
- ftp://ftp.host.it
- ftp.host.it
- ftp://ipaddress
- ipaddress
Ora mi domando, perchè NLST funziona, mentre gli altri comandi no?
Ovviamente username e password sono corretti, ho provato su più ftp ed è sempre la stessa identica storia! Non può essere il firewall, perchè con i client come CuteFTP funziona tutto!!
Quindi cosa può essere?
Ogni idea è ben accetta!
Grazie!!