Autor |
Beitrag |
gordon65
Beiträge: 27
|
Verfasst: Di 12.01.10 19:39
also ich hab ein ftp zugriffsprogramm.
jetzt sagt mir aber c# das etwas veraltert ist:
C#-Quelltext 1:
| IPEndPoint(Dns.Resolve(remoteHost).AddressList[0], remotePort); |
jetzt hab ich versucht das problem selber zu lösen:
C#-Quelltext 1:
| IPEndPoint(Dns.GetHostEntry(remoteHost).AddressList[0], remotePort); |
nur das funktioniert nicht.
Hier ist das vollständige:
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
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
|
Verfasst: Di 12.01.10 20:08
gordon65 hat folgendes geschrieben : | 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
Beiträge: 27
|
Verfasst: 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
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Di 12.01.10 20:45
gordon65 hat folgendes geschrieben : | 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
Beiträge: 27
|
Verfasst: 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"
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
Beiträge: 339
Erhaltene Danke: 20
Win 10
C# (VS 2012), C++ (VS 2012/GCC), PAWN(Notepad++), Java(NetBeans)
|
Verfasst: Mi 13.01.10 01:27
|
|
danielf
Beiträge: 1012
Erhaltene Danke: 24
Windows XP
C#, Visual Studio
|
Verfasst: Mi 13.01.10 10:01
C#-Quelltext 1: 2:
| if (true) return true; |
|
|
gordon65
Beiträge: 27
|
Verfasst: 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
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: 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
Beiträge: 27
|
Verfasst: 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.
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
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Do 14.01.10 00:44
gordon65 hat folgendes geschrieben : | ich hab den port 21 ... !!! (nicht 0) |
Da ist die Fehlermeldung aber anderer Meinung: "213.202.225.68: 0"
gordon65 hat folgendes geschrieben : | 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 .
gordon65 hat folgendes geschrieben : | System.Net.WebExceptions: Der Remoteserver hat einen Fehler zurückgegeben: (530) Nicht angemeldet. |
Bei meinem FTP-Server funktioniert es so .
_________________ >λ=
|
|
gordon65
Beiträge: 27
|
Verfasst: 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.
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
Beiträge: 27
|
Verfasst: Sa 16.01.10 12:42
|
|
Kha
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Sa 16.01.10 13:25
Huch, hast du deine Frage noch reineditiert?
Wie auch immer, du verwechselst gerade Upload und Download .
_________________ >λ=
|
|
gordon65
Beiträge: 27
|
Verfasst: 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
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: 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...
gordon65 hat folgendes geschrieben : | 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
Beiträge: 27
|
Verfasst: 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:
C#-Quelltext 1: 2: 3: 4: 5:
| String filename = "datei.txt"; System.IO.FileInfo file = null; file = new System.IO.FileInfo(filename);
|
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
Beiträge: 70
Windows7
C# (VS 2010)
|
Verfasst: Di 19.01.10 11:45
gordon65 hat folgendes geschrieben : |
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
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
Beiträge: 27
|
Verfasst: 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
Beiträge: 1012
Erhaltene Danke: 24
Windows XP
C#, Visual Studio
|
Verfasst: Di 19.01.10 16:41
Hi,
wieso verwendest du nicht die Methode UploadFile?
DareDevil hat folgendes geschrieben : |
Sieht dann ungefähr so aus
|
Ungefähr oder sieht so aus? Die Datei "C:\test2\MyFile.txt" hat auch Inhalt?
Gruß Daniel
|
|