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!!