FTP Problem

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Rotes_Eichhörnchen

Betreff: FTP Problem

BeitragFr, Jun 02, 2006 10:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Bitte meinen vorherigen Post löschen! danke!

also... ich bin jetzt schon etwas weiter:

Code: [AUSKLAPPEN]


;is jetzt nur ein kleines Beispiel.
;kann nur eine bestimmte Datei runterladen, für mehr brauchte ich
;das damals, als ich es gemacht habe, nicht  ;)
;aber is ja leicht auszubauen...


Graphics 640,480,0,2
SetBuffer BackBuffer()

Global port, ip$,tcp,daten
Dim pos(6)

time = MilliSecs()
tcp = OpenTCPStream ("squirrelfrank.sq.funpic.de",21);ftp server

nachricht$ = ReadLine(tcp)
Print nachricht


;Anmeldung
WriteLine tcp,"USER "+"squirrelfrank"  ;ftp loginname
nachricht$ = ReadLine(tcp)
Print nachricht

WriteLine tcp,"PASS "+"######"  ;ftp passwort
nachricht$ = ReadLine(tcp)
Print nachricht

WriteLine tcp,"TYPE I" ;binär Modus!
nachricht$ = ReadLine(tcp)
Print nachricht

WriteLine tcp, "PASV" ;passiver Transfermodus
nachricht$ = ReadLine(tcp)
IP_PORT(nachricht$) ;2. ip aus nachricht holen



daten = OpenTCPStream (ip$,port)

; Die Input/Output-Schleife
Repeat
; lles was der Server einem schickt auslesen und printen.
nachricht$ = ReadLine$(tcp)
Print nachricht$

; Kommandos eingeben lassen und selbige an den Server schicken.
i$ = Input(">")


WriteLine tcp, i$


; Solange wiederholen bis man 'ende' eingibt.


Until i$ = "ende"
End






; Solange wiederholen bis man 'ende' eingibt.

CloseTCPStream daten
WaitKey
End


;empfangene Ip für den Download umwandeln.
Function IP_PORT(nachricht$)
ip$ =""
port = 0
punkt$ ="."

pos(0) = (Instr(nachricht$,"(")+1)

For i = 1 To 4
 pos(i) = Instr(nachricht$,",",pos(i-1)+1)
 If i > 1 Then t = 1
 stelle$ = Mid(nachricht,pos(i-1)+t,pos(i)-pos(i-1)-t)
 If i = 4 Then punkt$ =""
 ip$ = ip$ + stelle$ + punkt$
Next

pos(5) = Instr(nachricht$,",",pos(4)+1)
zahl1  = Mid(nachricht,(pos(4)+1),pos(5)-(pos(4)+1))

pos(6) = Instr(nachricht$,")",pos(5)+1)
zahl2  = Mid(nachricht,(pos(5)+1),pos(6)-(pos(5)+1))

port = zahl1*256 + zahl2

Print "IP: " + ip$
Print "PORT: " +port
End Function


nur mein problem, sobald ich den stream daten öffne, kann ich mit dem server nicht mehr kommunizieren. Ich bekomme zwar vor die eingabe das ">", also befinde ich mich in der Repeat-schleife, aber wenn ich z.b. "list" eingebe, bekomme ich nur wieder ein ">" ausgegeben, und nicht sowas wie opening asci-imode, oder so.

wo ist der fehler?

D2006

Administrator

BeitragFr, Jun 02, 2006 11:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich versteh nichtmal warum du eine zusätzliche Verbindung aufbauen willst. Beim FT Protokoll geht alles über eine Verbindung, welche stehts erhalten bleibt (von inakti-Timeouts abgesehen). Auch wenn du ne Datei runterladen willst (via FTP) geht das über die Verbindung.

Also erklär doch erstmal was du vor hast?!

Grüße
D2006
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

Rotes_Eichhörnchen

BeitragFr, Jun 02, 2006 12:06
Antworten mit Zitat
Benutzer-Profile anzeigen
ich will einfach dateien hoch, und runterladen...

dazu brauch ich nunmal eine 2. verbindung... iss so, anders gehts nicht

es geht nur so...

D2006

Administrator

BeitragFr, Jun 02, 2006 12:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ein FTP Programm habe ich noch nicht gemacht, aber diese These halte ich für Schwachsinn. Das FT Protokoll ist doch dafür ausgelegt innerhalb einer Verbindung mehrere Dateien hin und herzuschieben, und es gibt KEINEN logischen Grund dafür mehrere Verbindungen zu benutzen. Passt prima durch eine. Smile

MfG
D2006
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

Rotes_Eichhörnchen

BeitragFr, Jun 02, 2006 12:40
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab aber bis jetzt nur FTp clients gesehen , die so funktionieren, und auch in BB gibt es nur welche, die so funzten, und in allen internet beschreibungen steht das so, ...

mehr kann ich auch nicht sagen

D2006

Administrator

BeitragFr, Jun 02, 2006 12:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Embarassed Das FT Protokoll funktioniert ja tatsächlich so... unnachvollziehbar, egal.

Schonmal geprüft, ob der Stream noch offen ist? (via ql:EOF)
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

Rotes_Eichhörnchen

BeitragFr, Jun 02, 2006 12:53
Antworten mit Zitat
Benutzer-Profile anzeigen
ichhab das hach Repeat eingefügt, aber die meldung erscheint nicht...

If Eof(daten) Then Print "Die Verbindung ist zusammengebrochen"

also sollte es offen sein

Rotes_Eichhörnchen

BeitragFr, Jun 02, 2006 12:56
Antworten mit Zitat
Benutzer-Profile anzeigen
der stream schließt sich...wie kann ich das ändern?

Goodjee

BeitragFr, Jun 02, 2006 17:48
Antworten mit Zitat
Benutzer-Profile anzeigen
jeden schleifendurchgang einmal neu verbinden...
es gibt einen guten ftp code...der funktioniert im codearchiev
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

Kabelbinder

Sieger des WM-Contest 2006

BeitragFr, Jun 02, 2006 23:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

@D2006: Ich verstehe von Protokollen sicher nicht so viel, wie du. Aber ich habe schon ein paar Programme geschrieben, die via FTP Datein Hoch und runterladen. Und dabei hab ich immer vor jedem hoch- und runterladen den Daten-stream geschlossen und neu geöffnet. Anders ging es nicht, Glaub es mir einfach Smile .

@Rotes_Eichhörnchen: Ich glaube, es liegt am Passiven Transfermodus ("PASV") Mir ist aufgefallen, dass man auch den Befehl "DELE" nicht mehr verwenden kann, nachdem man "PASV" benutzt hat. Irgendwie kann man das sicher zurückstellen...
<Wing Avenger Download> ◊◊◊ <Macrophage Download>

Mathias-Kwiatkowski

BeitragSa, Jun 03, 2006 1:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, also ich habe dir es mal etwas einfacher gemacht, ich habe dir extra eine DLL Programmiert, mit dieser DLL kannst du

Files Hochladen
Files Downloaden
Ordner Erstellen
Ordner löschen
Files Löschen

Wenn du weiter Funktionen brauchen solltest sage bescheid, helfe gerne, aber bitte beachte eines, diese DLL wurde persönlich von mir programmiert, und ich würde es gerne sehen das wenn einer diese DLL in seinem Programm benutzt das ganz am anfang vom Code PCInfo() befehl ausgefürt wird, damit ich etwas werbung habe Smile wenn mich einer persönlich fragt ob er die werbung weglassen kann, werde ich es dann mit jedem einzellnen besprechen, nutz PM oder ICQ Smile

Befor du diese File Downloadest sage ich dir was in dieser Zip enthalten ist

Hile ( einmal in einer TXT / einaml in HTML )

DLL
und die DECLS

die DLL und die DECLS müssen im verzeichniss vom jeweiligen bb Ordner im Userlib rein , dann gehts Wink


viel spass noch

http://purechannel.ath.cx/PureChannel-FTP.ZIP

würde mich freuen wenn ich zu diser dll rückantwort bekommen würde,


MFG Admin PureChannel - Mathias Kwiatkowski

Hip Teen

BeitragDo, Jun 22, 2006 10:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
@Rotes_Eichhörnchen: Ich glaube, es liegt am Passiven Transfermodus ("PASV") Mir ist aufgefallen, dass man auch den Befehl "DELE" nicht mehr verwenden kann, nachdem man "PASV" benutzt hat. Irgendwie kann man das sicher zurückstellen...

Wenn ich mich recht erinnere akzeptiert ein Server nach dem PASV Befehl nur Befehle, die zum Datenaustausch verwendet werden, sowas wie RETR oder LIST.
Damit könnte das Problem auch in gewisser Weise zusammenhängen. Vielleicht sollten aber auch einfach die Daten mal ausgelesen werden, die auf dem Datenstream geschickt werden, ob da Daten angekommen könnte auskunft darüber geben, was der Server gerade macht.

(ich hoffe ich pushe keinen all zu alten Thread)
Spruch der Woche: "Ahh, ein neues Gesicht?!" - "Nein, das hab ich schon länger"

Lunatix

BeitragDo, Jun 22, 2006 12:47
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Mathias-Kwiatkowski : mein Foxy sacht "Seiten-LadeFehler" - ich würde mir die DLL gern mla anschaun, wenn ich das darf Very Happy
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group