FTP Transfer wird nicht abgeschlossen ?
Übersicht

RaptorBetreff: FTP Transfer wird nicht abgeschlossen ? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
zuerst der Code für die DIR funktion: Code: [AUSKLAPPEN] Function nDir(FtpStream) ; Lokale Variablen Local Result$ ; Rückgabe vom Server Local DataStream ; Der Daten Stream ; Fragt nach einer neuen Daten Verbindung WriteLine FtpStream,"PASV" Print ReadLine(FtpStream) DataStream = FtpDataConnect(Result) ;-- Erstelle zweite Verbindung ; Bereitet den Server auf das Empfangen vor WriteLine FtpStream,"NLST" Print ReadLine(FtpStream) ;=150 While Not Eof(DataStream) Print ReadLine(DataStream) ;=Ausgabe der Dateien OK Wend ; Gibt den Datenstrom wieder frei CloseTCPStream DataStream End Function Jetzt noch der Code für die Zweite Verbindung Code: [AUSKLAPPEN] Function FtpDataConnect(IPP$) ; Die Funktion entschlüsselt IP und Port, verbindet dorthin und gibt den Handle zurück Local Connection Local IP$ Local Port$ Local Count Local StrPos Local Buffer$ ; Prüft, ob die ersten drei Zeichen 227 sind If Left(IPP,3) = 227 Then ; Kopiert den Abschnitt mit den Klammern auf dem String StrPos = Instr(IPP,"(",1) Buffer = Right(IPP,Len(IPP)-StrPos) ; Entfernt die Klammern Buffer = Left(Buffer,Len(Buffer)-1) ; Trennt IP und Port Teil StrPos = 0 For Count = 1 To 4 Step 1 StrPos = Instr(Buffer,",",StrPos+1) Next ; Nach dem vierten Kommata steht der Port Code IP$ = Left(Buffer,Len(Buffer)-(Len(Buffer)-StrPos)-1) Port = Right(Buffer,Len(Buffer)-StrPos) ; Ersetzt die Kommata durch Punkte für korrekte IP Angabe IP$ = Replace(IP$,",",".") ; Ermittelt die korrekte Port Nummer Buffer = Port StrPos = Instr(Buffer,",",1) Port1$ = Left(Buffer,StrPos-1) Port2$ = Right(Buffer,Len(Buffer)-StrPos) Port = Int(Port1)*256+Int(Port2) Ausgabe("Verbinde nach "+IP+" mit Port "+Port) Connection = OpenTCPStream(IP$,Port) Return Connection Else ; Konnte keine Verbindung aufbauen Return 0 EndIf End Function Wenn ich die Function nDir jetzt aufrufe klappt alles soweit, er gibt mit auch die auf dem Server befindlichen Daten aus. Es kommt aber kein 226 Transfer complete ! Ebenfalls kann ich die Function nicht 2 mal hintereinander ausführen ??? Sieht hier jemand nen Fehler ? Gruß Raptor |
||
![]() |
Mathias-Kwiatkowski |
![]() Antworten mit Zitat ![]() |
---|---|---|
du kannst die funktion nicht 2 mal ausführen weil blitzbasic im tcp modus nur senden kann und nach dem senden noch alles empfangen kann, also was ich sagen will ist du kannst nicht hingehen und sowas machen
writeline stream,"lol" print readline(stream) writeline stream,"lol2" print readline(stream) das geht nicht weil man kann nur erst alles senden und dann alles empfangen, und danach muss der stream geschlossen werden, ansonsten macht es bb automatiosch, und auf dem ftp server bist du zwar noch eingeloggt, aber ein toter besucher ^^ du musst also wieder die tcp verbindung öffnen! ansonsten benutz blitzmax da geht es besser, da kann man senden & empfangen usw. |
||
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ähm, natürlich kann BB senden und empfangen, ich erinnere mich noch recht gut, dass eines meiner uralten spielchen das recht gut konnte. | ||
![]() |
Mathias-Kwiatkowski |
![]() Antworten mit Zitat ![]() |
---|---|---|
kann senden und empfangen aber NICHT HINTEREINANDER, man muss den stream dann neu öffnen!!! | ||
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hm, nein, eigentlich nicht. Siehe HTTP, da sendet man auch einen request und empfängt dann die antwort. Oder IRC, da sendet und empfängt man dauernd. | ||
![]() |
Mathias-Kwiatkowski |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und OB TCP den Stream Kappt , moment das haben zich leute bestätigt, werde etwas suchen müssen! da bist du voll im unrecht! | ||
Raptor |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok, über die Function FtpDataConnect(Result) wird eine Zweite Verbindung hergestellt. Über diese Verbindung werden dann die Daten übermittelt.
Soweit funktioniert das auch. Die Daten werden übergeben. Anschließend wird diese Zweite Verbindung durch CloseTCPStream DataStream wieder geschlossen. Jetzt müsste es doch möglich sein wieder eine neue Verbindung aufzubauen, wieder über die Function. Irgendwo in dem Code befindet sich ein Fehler. Ob die Zweite Verbindung nicht richtig geschlossen wird ? Immerhin kommt beim Auslesen auch keine Transfer Complete Nachricht. Beim Download das selbe. Pro Datei die Function neu aufrufen. Functioniert auch nur bei einer Datei |
||
![]() |
Mathias-Kwiatkowski |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich seh mir dein code morgen in ruhe an, ich finde den fehler schon noch ^^ hab selber mal ftp client und nen chat in tcp & udp & via mysql programmiert.
weil ich arbeiten muss morgen früh |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group