Autor Beitrag
gordon65
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Di 12.01.10 19:39 
also ich hab ein ftp zugriffsprogramm.
jetzt sagt mir aber c# das etwas veraltert ist:

ausblenden C#-Quelltext
1:
        IPEndPoint(Dns.Resolve(remoteHost).AddressList[0], remotePort);					


jetzt hab ich versucht das problem selber zu lösen:

ausblenden C#-Quelltext
1:
        IPEndPoint(Dns.GetHostEntry(remoteHost).AddressList[0], remotePort);					


nur das funktioniert nicht.



Hier ist das vollständige:

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
public void login()
        {

        clientSocket = new 
        Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
        IPEndPoint ep = new 
        IPEndPoint(Dns.Resolve(remoteHost).AddressList[0], remotePort);
        IPEndPoint(Dns.GetHostEntry(remoteHost).AddressList[0], remotePort);
        
        
        
        
        try
        {
        clientSocket.Connect(ep);
        }
        catch(Exception)
        {
        throw new IOException("Couldn't connect to remote server");
        }

        readReply();
        if(retValue != 220)
        {
        close();
        throw new IOException(reply.Substring(4));
        }
        if(debug)
        Console.WriteLine("USER "+remoteUser);

        sendCommand("USER "+remoteUser);

        if( !(retValue == 331 || retValue == 230) )
        {
        cleanup();
        throw new IOException(reply.Substring(4));
        }

        if( retValue != 230 )
        {
        if(debug)
        Console.WriteLine("PASS xxx");

        sendCommand("PASS "+remotePass);
        if( !(retValue == 230 || retValue == 202) )
        {
        cleanup();
        throw new IOException(reply.Substring(4));
        }
        }

        logined = true;
        Console.WriteLine("Connected to "+remoteHost);

        chdir(remotePath);

        }
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Di 12.01.10 20:08 
user profile icongordon65 hat folgendes geschrieben Zum zitierten Posting springen:
nur das funktioniert nicht.

Immer diese ausführlichen Problembeschreibungen: Compiler- oder Laufzeitproblem? An welcher Stelle? Welche Fehlermeldung? Bei Exceptions möglichst ex.ToString, nicht ex.Message benutzen (das liefert mehr Informationen).

Zur Sache selbst kann ich nichts sagen mangels ASP-Kenntnissen.

Gruß Jürgen
gordon65 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Di 12.01.10 20:11 
wenn man einfach mal zum test den befehl in visual studio eingegeben hätte wüste was er mir sagt

also in der fehlerliste steht:

Warnung 1 "System.Net.Dns.Resolve(string)" ist veraltet: "Resolve is obsoleted for this type, please use GetHostEntry instead. http://go.microsoft.com/fwlink/?linkid=14202" C:\Users\gordon65\AppData\Local\Temporary Projects\ftpconnect\FTP.cs 202 20 ftpconnect
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Di 12.01.10 20:45 
user profile icongordon65 hat folgendes geschrieben Zum zitierten Posting springen:
wenn man einfach mal zum test den befehl in visual studio eingegeben hätte wüste was er mir sagt
Scherzkeks ;) . Dass Resolve obsolete ist, haben wir bereits deinem ersten Posting entnommen. Es geht aber darum, was bei deinem korrigierten Code mit GetHostEntry schiefläuft - der, der nicht "funktioniert".

_________________
>λ=
gordon65 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Di 12.01.10 21:02 
Ich hab mein Fehler gefunden.

Danke für eure Zeit.



ok, nächstes Problem:

ich bekomme jetzt hier ein Fehler:

"Couldn't connect to remote server"

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
        try
        {
        clientSocket.Connect(ep);
        
        }
        catch(Exception)
        {
        throw new IOException("Couldn't connect to remote server");
        }




Braucht ihr noch Informationen ??


ich hab es bei 2 ftp Servern probiert ... es klappte bei allen 2 nicht

mfg gordon
Greenberet
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 339
Erhaltene Danke: 20

Win 10
C# (VS 2012), C++ (VS 2012/GCC), PAWN(Notepad++), Java(NetBeans)
BeitragVerfasst: Mi 13.01.10 01:27 
user profile icongordon65 hat folgendes geschrieben Zum zitierten Posting springen:

ich bekomme jetzt hier ein Fehler:

"Couldn't connect to remote server"

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
        try
        {
        clientSocket.Connect(ep);
        
        }
        catch(Exception)
        {
        throw new IOException("Couldn't connect to remote server");
        }




Braucht ihr noch Informationen ??

user profile iconJüTho hat folgendes geschrieben Zum zitierten Posting springen:
user profile icongordon65 hat folgendes geschrieben Zum zitierten Posting springen:
nur das funktioniert nicht.

Immer diese ausführlichen Problembeschreibungen: Compiler- oder Laufzeitproblem? An welcher Stelle? Welche Fehlermeldung? Bei Exceptions möglichst ex.ToString, nicht ex.Message benutzen (das liefert mehr Informationen).

was glaubst du...
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mi 13.01.10 10:01 
ausblenden C#-Quelltext
1:
2:
if (true
   return true;
gordon65 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Mi 13.01.10 21:45 
sry leute .....

Hier ist die exception:

System.Net.Sockets.SocketException: Die angeforderte Adresse ist in diesem Kontext ungültig 213.202.225.68:0
bei System.Net.Sockets.Socket.DoConnet<EndPoint endPointSnapshot, SocketAddress socketAdress>
bei System.Net.Socket.Connect<EndPoint remoteEP>
bei ftpconnect.FTP.login<>; in C:\Users\gordon65\Documents\Visual Studio 2008\Projects\ftpconnect\ftpconnect\FTP.cs:Zeile 210.
Caught Error :Eine Anforderung zum Senden oder Empfangen von Daten wurde verhindert, da der Socket nicht verbunden ist und
<beim Sender über einen Datagrammsocket mit einem sendto-Aufruf> keine Adresse angegeben wurde
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mi 13.01.10 22:05 
Port 0 ist möglicherweise eine schlechte Wahl...?

PS: Wenn es um FTP geht, warum dann keinen WebClient/FtpWebRequest?

_________________
>λ=
gordon65 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Mi 13.01.10 22:13 
ich hab den port 21 ... !!! (nicht 0)

und was ist der unterschied bei dem was ich hab und webClient/FtpWebRequest ??

und würd es vl. mit WebClient/FtpWebRequest funktionieren

vl.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
            WebClient request = new WebClient();
            request.Credentials = new NetworkCredential("gordon_656449""****");

            byte[] fileData = request.DownloadData(@"ftp://gordon_656449.go.funpic.de/testfolder" + "/" + "MyFile.txt");

            FileStream file = File.Create(@"C:\test2" + "\\" + "MyFile.txt");

            file.Write(fileData, 0, fileData.Length);

            file.Close();


dann bekomm ich den Fehler;

System.Net.WebExceptions: Der Remoteserver hat einen Fehler zurückgegeben: (530) Nicht angemeldet.
bei System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest&request)
bei System.Net.WebClient.DownloadData(Uri address)
bei Login2.Form1.ftpdownload2() in C:\Users\gordon65\Documents\Visual Studio 2008\Projects\Login2\Form1.cs Zeile 143.


Und das login geht !! ich habe die zugangsdaten richtig drinnern und ich hab es mit filezilla ausprobiert!
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Do 14.01.10 00:44 
user profile icongordon65 hat folgendes geschrieben Zum zitierten Posting springen:
ich hab den port 21 ... !!! (nicht 0)
Da ist die Fehlermeldung aber anderer Meinung: "213.202.225.68:0"

user profile icongordon65 hat folgendes geschrieben Zum zitierten Posting springen:
und was ist der unterschied bei dem was ich hab und webClient/FtpWebRequest ??
Das du dich nicht darum kümmern musst, was dir WebClient/FtpWebRequest an Arbeit abnimmt ;) .

user profile icongordon65 hat folgendes geschrieben Zum zitierten Posting springen:
System.Net.WebExceptions: Der Remoteserver hat einen Fehler zurückgegeben: (530) Nicht angemeldet.
Bei meinem FTP-Server funktioniert es so :nixweiss: .

_________________
>λ=
gordon65 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Do 14.01.10 21:26 
ok du hast recht.

Ich hab einen anderen ftp Server genommen und jetzt hat es geklappt!

Danke.

jetzt muss ich nur noch einen upload hinbekommen.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
                WebClient request = new WebClient();
                request.Credentials = new NetworkCredential("****""*****");


                byte[] fileData = request.UploadData(@"ftp://web3.***-universe.net/files" + "/" + "MyFile.txt"):


                FileStream file = File.Create(@"C:\test2" + "\\" + "MyFile.txt");

                file.Write(fileData, 0, fileData.Length);
                file.Close();


jetzt bekomm ich ein paar compiler-fehler:

Fehler 5 Keine Überladung für die UploadData-Methode nimmt 1 Argumente an.

So müsste das ausschauen:

UploadData(Uri, Byte[])

was muss ich jetzt bei byte angeben .... (ich wüste wie groß die datei wäre, falls ich sowas brauche)
gordon65 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Sa 16.01.10 12:42 
weis das den keiner ??
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 16.01.10 13:25 
Huch, hast du deine Frage noch reineditiert?

Wie auch immer, du verwechselst gerade Upload und Download ;) .

_________________
>λ=
gordon65 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Sa 16.01.10 20:19 
ich brauche einen download UND einen upload ... den download hab ich hinbekommen ... aber den upload noch nicht ... siehe oben ...
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 17.01.10 13:58 
Dann ist das wohl der Code für den Download, in den du einfach UploadData eingesetzt hast, das kann natürlich für Verwirrungen sorgen...

user profile icongordon65 hat folgendes geschrieben Zum zitierten Posting springen:
was muss ich jetzt bei byte angeben .... (ich wüste wie groß die datei wäre, falls ich sowas brauche)
Das ist ein Byte-Array; so wie du beim Download die Datei als Byte-Array zurückbekommen hast, musst du sie beim Upload der Methode übergeben.

PS: Download/UploadFile ist dir schon aufgefallen ;) ?

_________________
>λ=
gordon65 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: So 17.01.10 18:43 
und wenn ich einfach eine Datei uploaden will die mit der gedownloadeteten file überhaupt nichts zu tun hat ??

Edit:
als ich müste doch das hernehmen können vom download oder ?? und nur das eine auswechseln (UploadData)

und da dann die größe eingeben:

also ich müsste erst mal die Größe ermitteln:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
            String filename = "datei.txt";
            System.IO.FileInfo file = null;
            file = new System.IO.FileInfo(filename);

            // und dann file.Length


funktioniert das ??

Edit2:

es funktoniert natürlich nicht.
Oder ich verstehe hier etwas falsch ?

Fehler 2 2-Argument: kann nicht von "long" in "byte[]" konvertiert werden. C:\Users\gordon\Documents\Visual Studio 2008\Projects\Login2\Login2\Form1.cs 168 114


ps: ich editiere öfters :) also ruhig mal öfter vorbeischauen :)
DareDevil
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 70

Windows7
C# (VS 2010)
BeitragVerfasst: Di 19.01.10 11:45 
user profile icongordon65 hat folgendes geschrieben Zum zitierten Posting springen:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
            WebClient request = new WebClient();
            request.Credentials = new NetworkCredential("gordon_656449""****");

            byte[] fileData = request.DownloadData(@"ftp://gordon_656449.go.funpic.de/testfolder" + "/" + "MyFile.txt");

            FileStream file = File.Create(@"C:\test2" + "\\" + "MyFile.txt");

            file.Write(fileData, 0, fileData.Length);

            file.Close();


Wie du schon richtig erkannt hast braucht UploadData eine URI und ein ByteArray wobei DownloadData nur eine URI braucht und ein ByteArray als Rückgabewert hat.

Somit musst du erst den Inhalt der Datei die du Uploaden willst in ein ByteArray Umwandeln und dieses ByteArray an die UploadData Funktion übergeben.

Sieht dann ungefähr so aus

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
                WebClient request = new WebClient();
                request.Credentials = new NetworkCredential("****""*****");

                string fileName = @"C:\test2\" + "MyFile.txt";

                FileStream file = File.Create(fileName);

                BinaryReader br = new BinaryReader(file);
                long numBytes = new FileInfo(fileName).Length;
                byte[] fileData = br.ReadBytes((int)numBytes);

                request.UploadData(@"ftp://web3.***-universe.net/files" + "/" + "MyFile.txt", fileData):


so musste eigentlich passen

habe ich aber nicht getestet, daher keine ahnung ob wirklich alles davon funktioniert
gordon65 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Di 19.01.10 16:33 
ja es funktioniert mehr oder weniger:

es gibt keinen compilerfehler oder Laufzeitfehler aber die Datei auf den Server hat 0 Bytes ... und wenn ich die Textdatei öffne steht (wie ich befürchtet habe) nichts drinnen
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Di 19.01.10 16:41 
Hi,

wieso verwendest du nicht die Methode UploadFile?

user profile iconDareDevil hat folgendes geschrieben Zum zitierten Posting springen:

Sieht dann ungefähr so aus

Ungefähr oder sieht so aus? Die Datei "C:\test2\MyFile.txt" hat auch Inhalt?

Gruß Daniel