FTP zugriff - ich versteh es nich

Status
Nicht offen für weitere Antworten.

Sayo~

Mitglied
also :

Code:
import java.io.IOException;
import sun.net.ftp.*;

public class FtpTest {
	
	FtpTest()throws IOException
	 {
		FtpClient ftpcl = new FtpClient();
		ftpcl.openServer("ftp://ftp.hs-niederrhein.de");
		ftpcl.cd("/pub/antivir/f-prot/");
		ftpcl.closeServer();
	}
	
	public static void main(String[] args) throws IOException {
		
		FtpTest ftpzugriff = new FtpTest();
		
	}

}

das sollte eigentlich nur ein test sein aber das geht ja gar nicht und es wirft mir folgenede exception :autsch: :

Code:
Exception in thread "main" java.net.UnknownHostException: [url]ftp://ftp.hs-niederrhein.de[/url]
	at java.net.PlainSocketImpl.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at sun.net.NetworkClient.doConnect(Unknown Source)
	at sun.net.NetworkClient.openServer(Unknown Source)
	at sun.net.ftp.FtpClient.openServer(Unknown Source)
	at sun.net.ftp.FtpClient.openServer(Unknown Source)
	at FtpTest.<init>(FtpTest.java:11)
	at FtpTest.main(FtpTest.java:18)

kann mir jemand sagen was da jetzt so falsch is

ich will eigentlich nur auf den server connecten und wieder schließen aber das geht ja nich mal :bahnhof:
 

thE_29

Top Contributor
Wie wärs ohne dem ftp:// vorne ;)

ftp.hs-niederrhein.de

Dieses ftp:// oder http:// gibt ja das Protokoll an und wenn du schon mit einer ftp Klasse arbeitetest, gehen die davon aus, das du da auch nur nen ftp Tauglichen Host einträgst ;)
 

Sayo~

Mitglied
ah okay :autsch:

danke dir sehr das geht schon mal :) , aber der cd geht O_O"

das wirft dann folgende exception

Exception in thread "main" sun.net.ftp.FtpLoginException: Not logged in
at sun.net.ftp.FtpClient.readReply(Unknown Source)
at sun.net.ftp.FtpClient.issueCommand(Unknown Source)
at sun.net.ftp.FtpClient.issueCommandCheck(Unknown Source)
at sun.net.ftp.FtpClient.cd(Unknown Source)
at FtpTest.<init>(FtpTest.java:10)
at FtpTest.main(FtpTest.java:16)

was hab ich da falsh geamcht ?


also zur info das sollte eigentlich ein KSDS (oder so) werden was andre uhres beschrieben hat :)
server und so hab ich mir einfahc einen mit google rasugepickt
 

thE_29

Top Contributor
Jop, dann mit anonymous!

Explorer oder dgl loggen sich immer mit anonymous automatisch ein, wenn kein username angegeben ist!
 

Sayo~

Mitglied
aah okay
-> anonymous genommen pswwort freigelassen
-> exception das passwort 331 sein muss
-> 331 eingegeben = es geht keine exceptions mehr :)

okay so weit so gut und danke thE_29 sehr nett das du mir so schnell geholfen hast :toll:

so jetzt hab ich noch eine frage :

also ich will weil da auf dem server ne datei liegt glaub bla.txt was weiß ich
die datei einfach nur einlesen

also ... .get("bla.txt");

und dann ? auslesen wie geht das von statten ? :bahnhof: sry wenn das schon gepostet wurde
aber wenn hier auch einer reinschaut den das interessiert dann is es auch gleich beisammen :)

wär nett wenn du darauf auch noch eine antowrt hättest ... hab da was von buffer gehört hab da aber 0 plan :cry:

btw. was heißt dgl ? ???:L
 

thE_29

Top Contributor
Du kriegst beim get einen TelnetInputStream zurück!

Diesen stream auslesen und in einen anderen Stream (sprich Datei) reinschreiben!


Outputstream out = new FileOutputStream("C:\\dein_datei.txt");

out.write(tistream.read());

Als Bsp, wobei der tistream das Objekt ist, was die get Methode zurückliefert!
Für streams, einfach mal die Boardsuche benutzen!
 

Sayo~

Mitglied
okay das hilft mir schon mal sehr :D
ich danke dir

mein cod sieht jetzt so aus :

Code:
import java.io.*;
import sun.net.TelnetInputStream;
import sun.net.ftp.*;

public class FtpTest {
	
	FtpTest()throws IOException
	 {
		FtpClient ftpcl = new FtpClient();
		ftpcl.openServer("ftp.hs-niederrhein.de");
		ftpcl.login("Anonymous", "331");
		ftpcl.cd("/pub/antivir/f-prot/");
		ftpcl.get("faq.txt");
		TelnetInputStream in = ftpcl.get("faq.txt");
		OutputStream out = new FileOutputStream("F:\\faq.txt");
		out.write(in.read());
		ftpcl.closeServer();
	}
	
	public static void main(String[] args) throws IOException {
		
		FtpTest ftpzugriff = new FtpTest();
		
	}

}

geht zwar nich weil sicher noch ne schleife rein muss oder so aber kommt noch :)
falls jetzt schon offensichtlich is was fehlerhaft is kann da ja wer posten

okay dann werd ich mal n bissl das forum nach streams etc. durchsuchen

danke nochmal thE hast mir sehr geholfen :toll: :toll:

/edit :
btw. noch ne frage was passiert eigentlich wenn ich den client nich mit .close() schließe ?
wenn ichs zum test "ausklammere" passiert bei mir nichts?
wird da die verbindung aufrecht erhalten oder wie ? wenn ja kann man ja so voll leicht irgendwelche ftp server flooten das wär ja ne ganz schöne sicherheitslücke :(
oder es passiert einfach gar nix :?

weiß da einer ne antwort drauf ?
 

thE_29

Top Contributor
Den Befehl kannst dir sparen: ftpcl.get("faq.txt");

Weil du ihn nachher nochmals machst!

Und ja es fehlt ne Schleife, du schreibst jetzt 1 byte rein :D


Und out.close(); fehlt auch noch!
 

Sayo~

Mitglied
wollt kurz auf mein edit hinweisen das das nich überlesen wird
ich selbst hat gesagt.:
/edit :
btw. noch ne frage was passiert eigentlich wenn ich den client nich mit .close() schließe ?
wenn ichs zum test "ausklammere" passiert bei mir nichts?
wird da die verbindung aufrecht erhalten oder wie ? wenn ja kann man ja so voll leicht irgendwelche ftp server flooten das wär ja ne ganz schöne sicherheitslücke :(
oder es passiert einfach gar nix icon_confused.gif

weiß da einer ne antwort drauf ?
 

Sayo~

Mitglied
sry für doppelpost aber der obrige fand ich sollte allein stehn ...

also zu schleife gibt es einen befehl der mir sagt wieviel bytes eine datei enthällt ?
oder besser noch einen befehl der mir sagt wieviel ich noc zu lesen hab bis datei zu ende ?
und wenn ja wie heißtn der?

dann noch die exception die jetzt geworfen wird

Code:
Exception in thread "main" sun.net.TelnetProtocolException: misplaced CR in input
	at sun.net.TelnetInputStream.read(Unknown Source)
	at FtpTest.<init>(FtpTest.java:15)
	at FtpTest.main(FtpTest.java:24)

inkl. den mehr oder weniger "überarbeiteten" code den ich jetzt hab :

Code:
import java.io.*;
import sun.net.TelnetInputStream;
import sun.net.ftp.*;

public class FtpTest {
	
	FtpTest()throws IOException
	 {
		FtpClient ftpcl = new FtpClient();
		ftpcl.openServer("ftp.hs-niederrhein.de");
		ftpcl.login("Anonymous", "331");
		ftpcl.cd("/pub/antivir/f-prot/");
		TelnetInputStream in = ftpcl.get("faq.txt");
		OutputStream out = new FileOutputStream("F:\\faq.txt");
		out.write(in.read());
		out.close();
		in.close();
		ftpcl.closeServer();
		
	}
	
	public static void main(String[] args) throws IOException {
		
		FtpTest ftpzugriff = new FtpTest();
	}

}
 

thE_29

Top Contributor
Code:
byte buf[] = new byte[1024];

for(int x = in.read(buf,0,1024); x != -1; x = in.read(buf,0,1024))
  out.write(buf,0,x);

So, der schreibt dir das jetzt rein.

Man sollte immer alle Verbindungen closen die ein close haben, den umsonst haben die das ja nicht ;)
 

Sayo~

Mitglied
thE_29 hat gesagt.:
Code:
byte buf[] = new byte[1024];

for(int x = in.read(buf,0,1024); x != -1; x = in.read(buf,0,1024))
  out.write(buf,0,x);

So, der schreibt dir das jetzt rein.

Man sollte immer alle Verbindungen closen die ein close haben, den umsonst haben die das ja nicht ;)

boah ja es geht :D
danke dir ! bist zu recht mod *schleim* :roll:

und die antwort aufs close :toll: :lol:

zum code den du gepostet hast was bedeutet
Code:
int x = in.read(buf,0,1024)
is das einzige was ich jetzt nich peile

und ich hab noch eine frage :oops: ... was wäre wenn ich eine datei hab die ca. 3 mb groß is
kann ich die auch lesen mit diesem code ? ne oder weil byte zu klein is ?[/code]
 

thE_29

Top Contributor
Lies dir einfach die API durch, dann weißt du was was tut..

Besser kann ichs dir auch net beibringen :D
 

Sayo~

Mitglied
also da das alles nur ein test programm war und nur dazu da war das zu erlernen
hab ich jetzt folgendes gemacht :
ich hab die ftp-url ersetzt... da ich n programm schreiben soll was nasa daten liest :autsch: ^^

problem is wenn ich mich da einlogen will kommte ne exception die ich nich deuten kann
Code:
Exception in thread "main" sun.net.ftp.FtpLoginException: password: 331 [002-0192] Challenge: 73288302    Enter: Response

	at sun.net.ftp.FtpClient.login(Unknown Source)
	at FtpTest.<init>(FtpTest.java:11)
	at FtpTest.main(FtpTest.java:27)


und so siehts aus wenn ich password eingebe
Code:
Exception in thread "main" sun.net.ftp.FtpLoginException: Not logged in
	at sun.net.ftp.FtpClient.readReply(Unknown Source)
	at sun.net.ftp.FtpClient.issueCommand(Unknown Source)
	at sun.net.ftp.FtpClient.login(Unknown Source)
	at FtpTest.<init>(FtpTest.java:11)
	at FtpTest.main(FtpTest.java:27)

und code schaut jetzt wiefolgt aus
Code:
import java.io.*;
import sun.net.TelnetInputStream;
import sun.net.ftp.*;

public class FtpTest {
	
	FtpTest()throws IOException
	 {
		FtpClient ftpcl = new FtpClient();
		ftpcl.openServer("e0srp01u.ecs.nasa.gov");
		ftpcl.login("Anonymous", "331");
		ftpcl.cd("/srtm/version2/SRTM3/Eurasia/");
		ftpcl.binary();
		TelnetInputStream in = ftpcl.get("N00E100.hgt");
		OutputStream out = new FileOutputStream("F:\\bla.hgt.zip");
		byte buf[] = new byte[1024];
		for(int x = in.read(buf,0,1024);x != -1; x = in.read(buf,0,1024))
		 out.write(buf,0,x);
		out.close();
		in.close();
		ftpcl.closeServer();
		
	}
	
	public static void main(String[] args) throws IOException {
		
		FtpTest ftpzugriff = new FtpTest();
	}
}

achso zu erwähnen wäre das ich zuvor noch ftpcl.binary(); implementieren musste ... ohne lief das programm nich (für alle die das hier nach vollziehen wollen oder ähnliche probleme haben oder einfach auch neu angefangen haben ftp per java zu programmieren )

btw. thE ich bin mit den API´s nich so bewahnt kannst du mir sagen wo ich die/das finde (auch wenns blöd kling ) ^_^
 

thE_29

Top Contributor
1. probiere anonymous klein schreiben, dann gehts auch!

2. http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html#read(byte[], int, int)
 

Sayo~

Mitglied
thE_29 hat gesagt.:
1. probiere anonymous klein schreiben, dann gehts auch!

2. http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html#read(byte[], int, int)

1. O_O" achso aaaah ja sry beim beispiel zuvor wars groß :wink:

2. danke les ich mir gegebenen falls durch

und das mit egal wie groß die datei is hat sich anscheind gelöst da geht ja hervorragend :)

danke dir nochma ohne dir wär ich sicherlich verzweifelt :autsch:

ein hoch auf thE :toll: :applaus: :toll: :applaus:


ich schließ den thread in 1 std. wenn noch jemand was hinzufügen will :D
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
windl Bluetooth und Zugriff auf ein IPhone Netzwerkprogrammierung 0
V Kann man mit Hilfe eines Java-Programms den Zugriff auf bestimmte Internetseiten verhinden? Netzwerkprogrammierung 3
J FTP FTP Zugriff über Proxy Server Netzwerkprogrammierung 1
D Zugriff auf Webinhalte ohne visuelles Öffnen der Website Netzwerkprogrammierung 2
L ssh connection; Zugriff auf 'screen' Prozess Netzwerkprogrammierung 5
J Website-Zugriff beenden Netzwerkprogrammierung 11
O HTTP Zugriff und Aktionen auf einer Webseite ausführen Netzwerkprogrammierung 9
F Desktop.browse() zugriff verweigert Netzwerkprogrammierung 2
vandread Zugriff auf Soziales Netzwerk mittels Java? Netzwerkprogrammierung 4
B FTP Applet mit FTP-Server-Zugriff sicher gestalten Netzwerkprogrammierung 12
A HTTP Zugriff auf http-Server - Error 400 Netzwerkprogrammierung 11
D Zugriff auf zentrale DB von verscheidenen Computern Netzwerkprogrammierung 7
T FTP-Zugriff auf Textdatei Netzwerkprogrammierung 13
B Zugriff auf eine Text- und XML-Datei Netzwerkprogrammierung 4
T JavaMail POP Zugriff zeigt nicht alle Emails Netzwerkprogrammierung 2
V Zugriff auf Laufwerk mit Username und Passwort? Netzwerkprogrammierung 7
R CVS- Zugriff Netzwerkprogrammierung 27
Airwolf89 Passwortabfrage bei Zugriff auf Zielrechner Netzwerkprogrammierung 17
ABstraCT Applet multipler port Zugriff möglich ? Netzwerkprogrammierung 5
ABstraCT Telnet port Zugriff problem (public IP) Netzwerkprogrammierung 12
S Zugriff auf Webseite Netzwerkprogrammierung 3
F Webserver Zugriff per Java Netzwerkprogrammierung 3
F Applet Datei Zugriff Netzwerkprogrammierung 13
T XML-RPC kein Zugriff auf Server Interface Netzwerkprogrammierung 3
T RMI - Client Zugriff auf Server funktioniert nicht Netzwerkprogrammierung 5
R Zugriff auf Suchmaschinen. Wie am Sinnvollsten? Netzwerkprogrammierung 2
D Zugriff auf URL über festgelegte Netzwerkresource Netzwerkprogrammierung 6
C Session Problem beim Zugriff auf Webseiten Netzwerkprogrammierung 3
H ServerSocket -> Zugriff nur von localhost Netzwerkprogrammierung 6
J SecurityManager - Server-Zugriff nur von bestimmten Clients? Netzwerkprogrammierung 2
P Praktikumsarbeit: Zugriff Active Directory/Server/Datenbank Netzwerkprogrammierung 15
J Server soll Zugriff auf Java Programm ermöglichen Netzwerkprogrammierung 3
S Suche API für einfachen HTTP-Zugriff. Netzwerkprogrammierung 17
D Zugriff auf OPC Server Netzwerkprogrammierung 1
D Zugriff auf Rechner im Lan Netzwerkprogrammierung 2
A Zugriff auf Inet Datenbank? Netzwerkprogrammierung 4
A Zugriff auf einen fremden Monitor im lan Netzwerkprogrammierung 3
F HTTP Netzwerkverbindung mit jar nich möglich Netzwerkprogrammierung 2
M RMI, cast funktioniert nich Netzwerkprogrammierung 2
M Socketverbindung funzt nich immer Netzwerkprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben