# FTP Kommunikation



## hotspott (25. Februar 2011)

So, mein erster Beitrag 
Erstmal ein fröhliches Hallo 


Und jetzt zum wesentlichen,
ich stehe vor folgendem Problem:
Ich baue eine Verbindung mit einem FTP-Server auf,
an Steuerport 21,
funktioniert auch alles super.
Doch wenn ich die Datenverbindung über den Befehl, "PORT" öfnnen will,
kommt immer der Fehler: "501 Bas Parameter. Numeric value required".
Woran kann das liegen was mach ich falsch?
Hier nochmal, der ganze Befehl:
"PORT 80,130,158,47,4,20"
Überhaupt, wo für stehen die letzen beiden Zahle?
alles was ich finde ist für den Port, aber warum 2? ein Port ist doch nur eine Zahl.
ich hab die letzten Ziffern aus einem Beispiel.

mfG
Hotspott


----------



## Adrian_Broher (25. Februar 2011)

> Überhaupt, wo für stehen die letzen beiden Zahle?
> alles was ich finde ist für den Port, aber warum 2? ein Port ist doch nur eine Zahl.
> ich hab die letzten Ziffern aus einem Beispiel.



http://www.faqs.org/rfcs/rfc959.html

Die letzten 2 Zahlen sind der tcp port als 16 bit short format in bytes aufgespalten.



> DATA PORT (PORT)
> 
> The argument is a HOST-PORT specification for the data port
> to be used in data connection.  There are defaults for both
> ...


----------



## hotspott (26. Februar 2011)

Ja genau die Seite hab ich gefunden, aber was ist bitte ein Port, in 16 Bit, short Format?

und wieso funktioniert das den jetzt nicht?
also warum kommt die Fehlermeldung?

Trodzdem Danke für deine Bemühung


----------



## hotspott (26. Februar 2011)

Okey, hat sich erledigt, hab ein Fehler gemacht, ein ganz anderen, aber trodzdem frag ich mich noch wie aus zwei Zahlen eine werden soll****


----------



## Adrian_Broher (26. Februar 2011)

hotspott hat gesagt.:


> Okey, hat sich erledigt, hab ein Fehler gemacht, ein ganz anderen, aber trodzdem frag ich mich noch wie aus zwei Zahlen eine werden soll****


 
Die Antwort dazu ist von der zur Implementierung genutzten Sprache abhängig. Prinzipiell wird der Wert von p1 per Bitshift um 8 Bits nach links verschoben und mit dem Wert von p2 addiert. Du erhältst dann eine 16 bit Grosse Ganzzahl (In C Sprachen entspricht dies üblicherweise dem short Datentypen), welche den Port repräsentiert.


----------



## hotspott (26. Februar 2011)

Sry leute aber ich versteh das immernoch nicht 
Könnt ihr mir vielleicht mal ein Beispiel geben für das Port 20.
würde mir sehr helfen!

Wen ich das jetzt richtig verstanden habe wird laut Wikipedia aus 4mit der verschiebung 8:

4-->00000100--(um 1nen nach links verschieben)-->00001000-->8
und das addiere ich auf 182, so komm ich auf 190 ist das so z.b richtig?


----------



## Adrian_Broher (26. Februar 2011)

```
PORT 192,168,2,1,42,23
```

ergibt


```
192.168.2.1:10775
```

auf den Port kommst du wie folgt:

42 ist das high order byte des ports und wird damit um 8 bit nach links verschoben.
23 ist das low order byte des ports und wird addiert.

42 in Binaerdarstellung ist 
	
	
	



```
0010 1010
```
23 in Binaerdarstellung ist 
	
	
	



```
0001 0111
```

Das high order byte wird um 8 bits nach links verschoben:

```
0010 1010 0000 0000
```
 und hat damit den Wert 10752.

High order und low order bit werden addiert: 10752 + 23 = 10775


----------



## hotspott (26. Februar 2011)

Super großen Dank!
Ich gehemal davon aus das deine Berechnung richtig ist 
und der fehler dann bei mir liegt.
nur um nochmal auf nummersicher zu gehen, der FTP-Server sucht danach mich, nicht ich muss die Verbindung zu ihm auf bauen oder?


----------

