actives ftp - geht nicht

Fragen rund um die Themen Netzwerk und Technik, die keinem Betriebssystem zuzuordnen sind. Beiträge rund um Hardware gehören auch hier rein (ausser bei Treiber-Fragen, diese dann im jeweiligen Subforum des passenden Betriebssystemes stellen).

actives ftp - geht nicht

Beitragvon cazper » Mo 08 Aug, 2005 11:21

moin zusamm

ich hab da wieder mal ein kleines problem...
und zwar will ich, nachdem der passive modus funktioniert, auch mal den aktiven modus implementieren.

erst werden sockets initialsisiert
dann der lokal port(10001) fĂĽr den daten transfer gesetzt
dann sende ich PORT 192,168,1,46,39,17

der server gibt mir aber folgendes zurĂĽck:
.
200 Port command successful.
RETR file.end
150 Opening data connection for die frau.html (3114 bytes).
425 Cannot open data connection (10054).
.
warum port 10054? weil 39*256+17=10001 ???

ach ja, das ganze läuft netzwerkintern, also niks mit firewall und router.

auch wenn ich port auf 10054 setze und das gleiche sende, verbindet er trozdem nicht...

hat jemand von euch ne idee?

grĂĽĂźe
lex
Bild
cazper
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 34
Registriert: Mo 18 Apr, 2005 14:02

Beitragvon dfx » Mo 08 Aug, 2005 14:53

10054 ist kein port, sondern ein windows socket error code: http://www.bookmark-master.com/socket-error-10054.html
xDSL unlimited 2.320 kbit/s
Bild
Bild
dfx
Board-User Level 3
Board-User Level 3
 
Beiträge: 1368
Registriert: Do 15 Jan, 2004 19:22
Wohnort: graz

Beitragvon cazper » Mo 08 Aug, 2005 15:25

ahaaaaaaa =)

jetzt komma dem ganzen schon was näher...

hmmm...

versteh ich trozdem nicht

meine funktion läuft wie folgt:
.
OpenSocket(DataSocket) //socket für datenverbindung öffnen
SetPort(p1*256+p2, DataSocket) //port an socket binden
send("PORT ip1,ip2,ip3,ip4,p1,p2")
retr("200 PORT command successfull")
send("RETR foo.bar")
retr("150 Opening data connection for die foo.bar (3114 bytes).")
retr("425 Cannot open data connection (10054).")
.

wie kann die verbingung plötzlich wieder futsch sein?
Bild
cazper
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 34
Registriert: Mo 18 Apr, 2005 14:02

Beitragvon dfx » Mo 08 Aug, 2005 15:30

connection reset by peer heißt, daß er zwar die verbindung hat aufbauen können, diese dann aber von der gegenstelle (also von deinem programm) vorzeitig unsauber beendet worden ist, bevor der datentransfer beendet werden konnte. wahrscheinlich liest du die daten nicht vollständig aus, die über die connection geschickt werden, so lange bis die connection vom server beendet wird.

normalerweise sieht das so aus (pseudocode):

Code: Alles auswählen
fd = socket();
bind(fd, "0.0.0.0", 0);
port = getlocalport(fd);
listen(fd);
send("PORT ip1,ip2,ip3,ip4,p1,p2");
waitfor("200");
send("RETR file");
waitfor("150");
data = accept(fd);
while (!eof(data))
    read(data);
close(data);
xDSL unlimited 2.320 kbit/s
Bild
Bild
dfx
Board-User Level 3
Board-User Level 3
 
Beiträge: 1368
Registriert: Do 15 Jan, 2004 19:22
Wohnort: graz

Beitragvon radditz » Mo 08 Aug, 2005 16:04

vielleicht wartet dein client auf irgendwas, anstatt eine bestätigung an den server zu senden
Telematica DSL Solo Pro 30 Mbit/s
Vorher: A1 VDSL 16 Mbit/s
radditz
Ultimate Power-User
Ultimate Power-User
 
Beiträge: 4399
Registriert: Mo 23 Jun, 2003 16:50

Beitragvon cazper » Mo 08 Aug, 2005 16:07

ah danke
aber habs schon,
und zwar setport bindet den port nicht gleichzeitig.
fehlt die funktion die den port an den socket bindet...

aber mal ne andere frage...
du hast geschrieben #while (!eof(data))#
ist das mit ftp möglich das eof?
Bild
cazper
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 34
Registriert: Mo 18 Apr, 2005 14:02

Beitragvon dfx » Mo 08 Aug, 2005 16:11

eof bei einem socket heißt einfach, daß der socket von der gegenstelle zugemacht worden ist und somit keine daten mehr ankommen können.
xDSL unlimited 2.320 kbit/s
Bild
Bild
dfx
Board-User Level 3
Board-User Level 3
 
Beiträge: 1368
Registriert: Do 15 Jan, 2004 19:22
Wohnort: graz

Beitragvon radditz » Mo 08 Aug, 2005 17:20

er hat ja gesagt, das is pseudo code, und eof hat sich bei streams eben eingebĂĽrgert.
Telematica DSL Solo Pro 30 Mbit/s
Vorher: A1 VDSL 16 Mbit/s
radditz
Ultimate Power-User
Ultimate Power-User
 
Beiträge: 4399
Registriert: Mo 23 Jun, 2003 16:50


ZurĂĽck zu TECHNIK, NETZWERK & HARDWARE

Wer ist online?

Mitglieder in diesem Forum: DotNetDotCom [Crawler], Yandex [Crawler] und 47 Gäste