title: ftp upload/download in c# for windows mobile 6.5 with opencf.net.ftp
body: <p>I tried to make an ftp upload and download but it is going all time to <code>Nullreference</code> error. It can be that the <code>opennetcf.net.ftp</code> is not the best way to solve the problem? Can anyone help me to solve the problem?</p>
  
  
  
  <pre class="lang-cs prettyprint-override"><code>namespace ftp_load
  {
  
  
  
      public partial class Form1 : Form
      {
  
          public class FTPManagerClass
          {
              private static string password = "";
              private static string username = "";
              private static string host = "";
  
              private FtpWebRequest ftpRequest = null;
              private FtpWebResponse ftpResponse = null;
              private Stream ftpStream = null;
              // private int bufferSize = 2048;
  
              public FTPManagerClass(string user, string pass, string hostname)
              {
                  username = user;
                  password = pass;
                  host = hostname;
  
              }
  
              public void DownloadFile(string remoteFile, string localFIle)
              {
                  try
                  {
                      ftpRequest = (FtpWebRequest)FtpWebRequest.Create(host + "/" + remoteFile);
                      ftpRequest.Credentials = new NetworkCredential(username, password);
                      //ftpRequest.UseBinary = true;
                      ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile;
                      ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
                      ftpStream = ftpResponse.GetResponseStream();
                      FileStream fs = new FileStream(localFIle, FileMode.OpenOrCreate);
  
                      fs.Close();
                      ftpStream.Close();
                      ftpResponse.Close();
                      ftpRequest = null;
  
  
                  }
                  catch (Exception ex)
                  {
                      MessageBox.Show(ex.Message);
  
                  }
              }
  
              public void UploadFile(string localFile, string remoteFile)
              {
                  try
                  {
                      ftpRequest = (FtpWebRequest)FtpWebRequest.Create(host + "/" + remoteFile);
                      ftpRequest.Credentials = new NetworkCredential(username, password);
                      //  ftpRequest.UseBinary = true;
                      // ftpRequest.UsePassive = true;
                      ftpRequest.KeepAlive = false;
                      ftpRequest.Method = WebRequestMethods.Ftp.UploadFile;
                      ftpStream = ftpRequest.GetRequestStream();
                      FileStream lfs = new FileStream(localFile, FileMode.Open);
                      byte[] bytebuffer = new byte[lfs.Length];
                      int bytesSend = lfs.Read(bytebuffer, 0, (int)lfs.Length);
                      try
                      {
  
                          while (bytesSend != -1)
                          {
                              ftpStream.Write(bytebuffer, 0, bytesSend);
                              bytesSend = lfs.Read(bytebuffer, 0, (int)lfs.Length);
  
                          }
                      }
                      catch (Exception ex)
                      {
  
                          MessageBox.Show(ex.Message);
                      }
                      ftpResponse.Close();
                      ftpStream.Close();
                      lfs.Close();
                      ftpRequest = null;
  
                  }
                  catch (Exception ex)
                  {
                      MessageBox.Show(ex.Message);
                  }
  
              }
          }
  
          FTPManagerClass client;
          private static string password = "";
          private static string username = "";
          private static string host = "";
  
          private FtpWebRequest ftpRequest = null;
          private FtpWebResponse ftpResponse = null;
          private Stream ftpStream = null;
  
  
          public Form1()
          {
              InitializeComponent();
              connMgr = new ConnMgr();
              connMgr.StatusChanged += new ConnMgr.StatusChangedEventHandler(StatusChanged_Handler);
          }
          private ConnMgr connMgr;
          private void button1_Click(object sender, EventArgs e)
          {
              if (txt_br_down.Text != "")
              {
                  client.DownloadFile(@"/GP_FTP/ans.txt", @"/download");
                  client = new FTPManagerClass("usr", "pwd", "ftp://ftp.tzf.com");
              }
  
              else
              {
                  MessageBox.Show("Ures mezo");
              }
          }
  
  
  
  
  
  
          private void txt_br_dw_1_TextChanged(object sender, EventArgs e)
          {
  
          }
  </code></pre>
  
  <p>The GPRS connection builds up, but after the ftp connection has some problem:</p>
  
  <pre class="lang-cs prettyprint-override"><code>        private void btn_login_Click(object sender, EventArgs e)
          {
  
          }
  
          private void btn_login_Click_1(object sender, EventArgs e)
          {
              if (!connMgr.Connected)
              {
                  connMgr.Connect("pannon", ConnMgr.ConnectionMode.Synchronous, " ", " ", "net");
                  txtLog.Text += "Sync connection successful\r\n";
              }
              else
              {
                  MessageBox.Show("No connection!");
              }
    }
  
          private void txtLog_TextChanged(object sender, EventArgs e)
          {
  
          }
          private void StatusChanged_Handler(object sender, ConnMgr.StatusChangedEventArgs e)
          {
              connMgr.Timeout = 3000;
              txtLog.Text += e.desc + "\r\n";         // Show current state's description
  
              if (!connMgr.Waiting)
                  if (connMgr.Connected)
                      txtLog.Text += "Confirmed - We are now connected\r\n";
                  else
                  {
                      txtLog.Text += "Confirmed - Connection instance has been released\r\n";
                      // btnCancel.Enabled = false;
                      // btnConnect.Enabled = true;
                  }
  
              if (e.connstatus == ConnMgr.ConnectionStatus.ExclusiveConflict)
                  MessageBox.Show("If using Activesync, check connection settings for 'Allow wireless connection ...' or remove from homebase.");
          }
          private void Form1_Load(object sender, EventArgs e)
          {
  
          }
  </code></pre>
  
  <p>No it looks the  authentication is ok.There is no problem!</p>
  
  <p>I made this:</p>
  
  <pre class="lang-cs prettyprint-override"><code>  try
                  {
                    client = new FTPManagerClass("usr", "pwd", "ftp://ftp.tzf.com");
                  }
                  catch (Exception ex)
                  {
  
                      MessageBox.Show("Login"+ ex);
                  }
  </code></pre>
  
  <p>This is ok!</p>
  
  <p>But after this: <code>ctacke</code></p>
  
  <pre class="lang-cs prettyprint-override"><code>            try 
  
              {
                  MessageBox.Show("before download");
                 client.DownloadFile("/GP_FTP/ans.txt", "/download");
                 MessageBox.Show("after download");
              }
  
              catch (Exception ex1)
  
              {
  
  
                  MessageBox.Show("file"+ ex1);
  
              }   
  </code></pre>
  
  <p>The problem is now : In <code>client.DownloadFile</code> <code>System.nullreferenceException</code>
  Now i have no idea :(.
  it can be some pity thing...</p>
  
  <p>Why this is null? <code>client.DownloadFile(@"/GP_FTP/ans.txt", @"/download");</code>
  i tried <code>client.DownloadFile("/GP_FTP/ans.txt", "/download");</code> and <code>client.DownloadFile("ans.txt", "/download");</code>
  and the same. WHY?</p>