Ciao ragazzi. Ho la necessità di realizzare un client FTP utilizzando la libreria TCPClient. Più o meno ci son riuscito. infatti il mio programma apre una connessione con il server si logga ma non riesco a scaricare il file. Cosa sto sbagliando?Vi riporto di seguito il codice che sto usando
Nel file che vien memorizzato sono riportate le istruzioni che ho inviato al server e non i dati che mi aspettocodice:myClient = new TcpClient("XXXXXXXX", 21); break; stream = myClient.GetStream(); int sendOffset = 0; int recOffset=0; int dataLength; Byte[] receiveData = new Byte[256]; // wait for a response dataLength = stream.Read(receiveData, recOffset, receiveData.Length); String recvdMessage = System.Text.Encoding.ASCII.GetString(receiveData, 0, dataLength); Console.WriteLine(recvdMessage.ToString()); recOffset+=dataLength; String message = "USER root\r\n"; Byte[] data = System.Text.Encoding.ASCII.GetBytes(message); //StreamWriter clientStrimWrite = new StreamWriter(stream); //clientStrimWrite.Write(message); stream.Write(data, 0, data.Length); sendOffset += data.Length; // wait for a response while (!stream.DataAvailable) { } dataLength = stream.Read(receiveData, 0, receiveData.Length); recvdMessage = System.Text.Encoding.ASCII.GetString(receiveData, 0, dataLength); Console.WriteLine(recvdMessage.ToString()); message = "PASS 546\r\n"; data = System.Text.Encoding.ASCII.GetBytes(message); stream.Write(data, 0, data.Length); // wait for a response while (!stream.DataAvailable) { } message = "CWD /sdcard\r\n"; data = System.Text.Encoding.ASCII.GetBytes(message); stream.Write(data, 0, data.Length); // wait for a response while (!stream.DataAvailable) { } message = "TYPE I\r\n"; data = System.Text.Encoding.ASCII.GetBytes(message); stream.Write(data, 0, data.Length); // wait for a response while (!stream.DataAvailable) { } message = "PASV\r\n"; data = System.Text.Encoding.ASCII.GetBytes(message); stream.Write(data, 0, data.Length); // wait for a response while (!stream.DataAvailable) { } message = "Nome del file"; data = System.Text.Encoding.ASCII.GetBytes(message); stream.Write(data, 0, data.Length); //Acquisizione file // wait for a response string _fileName = @"C:Cartella"\\" + "Nome del file"; FileInfo _File = new FileInfo(_fileName); FileStream _FileStream = new FileStream(_File.FullName, FileMode.Create, FileAccess.Write); byte[] buffer = new byte[256]; int bytesRead = stream.Read(buffer, 0, buffer.Length); string responseData = System.Text.Encoding.ASCII.GetString(buffer, 0, bytesRead); //while (bytesRead != 0) var reader = new StreamReader(myClient.GetStream()); while (myClient.Connected) { string line = reader.ReadLine(); //_FileStream.Write(buffer, 0, bytesRead); //bytesRead = stream.Read(buffer, 0, 2048); } _FileStream.Close();

Rispondi quotando