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
codice:
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();
Nel file che vien memorizzato sono riportate le istruzioni che ho inviato al server e non i dati che mi aspetto