PDA

Ver la versión completa : Cliente en C y login en ftp, Como ?¿?



chewarrior
13-10-2010, 20:05
Bueno el caso es que hoy me dio por provar mi cliente en C, con File server, pero claro no me autentifica ya que al server ftp le tengo puesta pass, mi pregunta es como me autentifico con mi cliente en C ?¿?, que tengo que hacer ¿?¿.

aqui el cliente en C.




#include <conio.h>
#include <stdio.h>
#include <windows.h>
#include <string.h>
#define ip "127.0.0.1" //ip del servidor al ke konectar
#define puerto 21 //puerto del server

int main()
{
WSADATA wsa;

int sock;//descriptor del socket.
struct sockaddr_in direccion; //datos del servidor al ke konectaremos
char buffer[1024]; //bufer donde guardaremos lo ke nos envie el Server.
char cadena[1024]; // la info ke enviaremos al Server.

WSAStartup(MAKEWORD(2,0),&wsa);

if((sock=socket(AF_INET,SOCK_STREAM, 0))<0 ){ // obtenemos el descriptor del socket

printf("problema al crear el stock");
getch();
exit(0);
}
else{
printf("socket creado con exito");


direccion.sin_family=AF_INET;// protocolo af inet, visto antes.
direccion.sin_port=htons(puerto);//htons convierte el puerto al formato de red.
direccion.sin_addr.s_addr=inet_addr(ip);

//conectamos al servidor
if(connect(sock,(struct sockaddr*)&direccion,sizeof(direccion))<0){
printf("error conectando…");
getch();
exit(0);
}



if(recv(sock,buffer,sizeof(buffer),0)==-1){
printf("Error recibiendo msg, saliendo…");
exit(0);
}

printf("conectado al servidor\n");
printf("Mensagje a enviar: ");

while(strcmp(cadena,"salir")){

gets(cadena);

if(send(sock,cadena,strlen(cadena),0)==-1){
printf("error enviando msg, cerrando…");
getch();
exit(0);

}
}
printf("\nMensage enviado. Esperando respuesta…");
printf("Mensaje recibido: %s",buffer);
getch();

}
return 0;
}





Y este es el log y la version de el server ftp, por si interesa



FileZilla Server version 0.9.36 beta
Copyright 2001-2010 by Tim Kosse ([email protected])
Connecting to server...
Connected, waiting for authentication
Logged on
Retrieving settings, please wait...
Done retrieving settings
(000001)24/10/2010 19:52:12 - (not logged in) (127.0.0.1)> Connected, sending welcome message...
(000001)24/10/2010 19:52:12 - (not logged in) (127.0.0.1)> 220-FileZilla Server version 0.9.36 beta
(000001)24/10/2010 19:52:12 - (not logged in) (127.0.0.1)> 220-written by Tim Kosse ([email protected])
(000001)24/10/2010 19:52:12 - (not logged in) (127.0.0.1)> 220 Please visit http://sourceforge.net/projects/filezilla/
(000001)24/10/2010 19:53:09 - (not logged in) (127.0.0.1)> discon

Fruit
13-10-2010, 23:14
Prueba a mirarte el protocolo FTP para ver cómo va la autenticación. Ésta es una de esas cosas que se suponen que debes saber si vas a programar directamente con sockets :)

chewarrior
14-10-2010, 18:11
Ok solucionado (Gracias), ahora no tengo tiempo por los estudios y demas,en cuanto pueda cuelgo el cliente ftp de c, o tal vez lo incluya en mi proximo tutorial sobre sockets en c.

Pd; Gracias por el consejo de que me mirara el protocolo ftp, hacia mucho tiempo que no lo utilizaba, y lo tenia un tanto olvidado.