000
06.02.2007, 09:23 Uhr
~Biasto
Gast
|
Hallo,
ich will einen simplen FTP-Client programmieren, der mir schlicht weg, eine Socket-Verbindung herstellt, mich an einem Remote-FTP-Server anmeldet, und mir dann in ein bestimmtes Verzeichnis wechselt, und von dort eine CSV-Datei abholt!
Folgendes habe ich schon codiert:
Code: |
struct hostent *host; struct sockaddr_in addr; UI4 sock, n,buffer_len, socket_status; char buffer[BUF_SIZE]; char buffer_recv[BUF_SIZE]; SI1 ftp_connection = 0; struct servent *sptr; sprintf(IPHost, "172.19.181.208\0"); /* Hostaddresse*/ socket_status = inet_pton(AF_INET, IPHost, &addr.sin_addr); /* Socket aufmachen, um Verbindung herzustellen */ sock = socket(AF_INET, SOCK_STREAM, 0); if (sock == -1) { printf("Create Socket failed!\n"); } else { printf("Create socket succeeded\n"); } /* Verbindung aufbauen */ addr.sin_family = AF_INET; addr.sin_port = htons(SERV_PORT); /* SERV_PORT ist 21 */ socket_status= connect(sock, (struct sockaddr*)&addr, sizeof(addr)); if(socket_status == -1) { perror("Connect() failed!\n"); } else { n = recv(sock, buffer_recv, strlen(buffer_recv), 0); printf("Connect succeeded!\n"); buffer_recv[n] = 0; /* terminate string */ fputs(buffer_recv, stdout); ftp_connection = 1; } /* am socket lauschen bzw. kommunizieren */ if (socket_status == 0) { while(ftp_connection == 1) { fgets(buffer, BUF_SIZE, stdin); /* Zum debuggen mit STDIN-Eingabe */ /*sprintf(buffer, "USER Administrator\r\n");*/ buffer_len = strlen(buffer); n = send(sock, buffer, strlen(buffer), 0); n = recv(sock, buffer_recv, strlen(buffer_recv), 0); if(n < 0) { perror("Receive error\n"); } buffer_recv[n] = 0; /* terminate string */ fputs(buffer_recv, stdout); } }
|
Also die Adresse wird umgesetzt, der Port auch. Der Socket wird erstellt, und auch das connect() ist erfolgreich.
Nun stehe ich aber da! Ich bekomme keine Nachricht vom Server, obwohl ich sowas erwartet hätte, ich kann auch senden was ich will... ich bekomme nie was zurück! Demnach spricht das nicht grade für große Funktionalität.
Kann mir jemand weiterhelfen, was ich falsch mache ? Oder fehlt noch irgendeine Kennung, um den FTP-Server ansprechen zu können ?
Es handelt sich dabei um den Standard-FTP-Server von Windows 2000, der Zugriff erfolgt von einem Solaris 10 System auf x86 (AMD).
Wäre nett, wenn mir jemand helfen oder zumindest den entscheidenen Tipp geben könnte.
Vielen Dank, Gruß Biasto |