ftp zugang timeout setzen mit falsche IP ausgabe...?



  • Hallo,

    habe hier an einen ftp Zugang eine Datei abgelegt..

    aber bei falscher IP kommt Fehlermeldung!

    Würde gern mit time-out (catch) vorher schon eine Aktion setzen" falsche IP"....

    aber wie ?

    gruß

    georg

    private void FtP()
            {
                //Eine neue Datei erstellen und lokal speichern (Beispiel hier: Textfile)
                StreamWriter w = new StreamWriter(@"C:\data.txt", true);
                w.WriteLine("BlaBlaBla");
                w.Close();
    
                //Ein Request erstellen an den ftp Server
                FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://192.168.0.11/++++/test.txt");
                // request.Timeout = 60000;
                //Die Methode angeben um eine Datei hochzuladen
                request.Method = WebRequestMethods.Ftp.UploadFile;
    
                //Berechtigungsdetails setzen vom ftp Server durch Username und Passwort
                request.Credentials = new NetworkCredential("root", "admin");
    
                try
                {
    
                    //Versuch eine Verbindung zu erstellen und eine Antwort zu erhalten
                    WebResponse response = request.GetResponse();
                    MessageBox.Show("Response hat funktioniert");
    
                }
    
                 catch (TimeoutException t)
                {
                    Console.WriteLine("Caught TimeoutException: {0}", t.Message);
    
                }
    
                catch (Exception exp)
                {
                    MessageBox.Show(exp.ToString());
                }
    
                //Neuer FileStream erstellen für die Datei
                FileStream fs = new FileStream(@"C:\data.txt", FileMode.Open);
                byte[] fileContents = new byte[fs.Length];
                fs.Read(fileContents, 0, Convert.ToInt32(fs.Length));
                fs.Flush();
                fs.Close();
    
                //Ein neuen Stream für den Request erstellen dem der FileStream mitgegeben wird.
                Stream requestStream = request.GetRequestStream();
                requestStream.Write(fileContents, 0, fileContents.Length);
                requestStream.Close();
    
                //Verbindung abbschliessen
                request.Abort();
            }
    

  • Administrator

    Ich kann dir nicht ganz folgen, was du möchtest. Was meinst du mit falscher IP-Adresse? Suchst du einfach nur eine Möglichkeit, um zu prüfen, ob jemand eine gültige IP-Adresse angegeben hat? Suchst du IPAddress.TryParse ?



  • bei falscher IP eingaben, komm Fehlermeldung: "Unbehandelte Ausnahme in der Anwendung" und dahe würde gern was einbinden was dies verhindert!?
    Also vorher schon Überprüft ob IP stimmt ggf. Anweisung da Falsche IP eingegeben worden ist oder sich dann verbindet..



  • hab das mir IPAddress.TryParse versucht..

    aber verglecht nut die richtigkeit der Form der IP aber nicht ob Sie wirklich im netzwerk vorhanden ist.



  • request.Timeout = 30000;
    
      catch (TimeoutException t)
                {
                    Console.WriteLine("Caught TimeoutException: {0}", t.Message);
    
                }
    

    solte mich wegen timeout exp. herausschmeise bei einer nicht aktiven IP, tut es aber nicht?



  • georg3 schrieb:

    solte mich wegen timeout exp. herausschmeise bei einer nicht aktiven IP, tut es aber nicht?

    Dann wird offensichtlich keine TimeoutException geworfen, sondern eine andere. Mit dem Debugger kannst du herausfinden, welche.



  • eine möglichkeit!

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Net.NetworkInformation;
    
    namespace Ping_IP
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
    
                bool pinging = false;
                Ping isPing = new Ping();
    
                try
                {
                    PingReply reply = isPing.Send(textBox1.Text);
                    pinging = reply.Status == IPStatus.Success;
    
                }
    
                catch (PingException)
                {
    
                }
                MessageBox.Show("" + pinging, "title");
    
            }
    
            private void textBox1_Validated(object sender, EventArgs e)
            {
    
            }
        }
    }