/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Codigo Fuente de un Servidor FTP?

 
      Índice del Foro elrincondelc.com -> Programación en Servidores
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
WaRc3L



Registrado: 12 Jun 2008
Mensajes: 199
Ubicación: en el registro de la CPU

MensajePublicado: 14/10/2008 12:36 pm
Título: Codigo Fuente de un Servidor FTP?

Buenas!, buscando, buscando, no he encontrado lo que buscava, y lo que estoy buscando es un Codigo fuente de un servidor FTP, sencillisimo..., con sockets, que es mi principal objetivo a aprender, se como hacer el Cliente, conectarse con un otro servidor, solo enviando Comandos, tipo SMTP..

No se si sera casi lo mismo, pero me gustaria mucho crear un servidor FTP, mi propio servidor FTP, pero, la pregunta es: ¿ Es complicado ?, porque, como mucho he visto Clientes que se conectan a otros Servidores

De veras, me sirviria muchisimo encontrar un codigo y entenderlo.

Gracias!

Saludos!
_________________
ToDos PoDeMoS CoMpaRTiR La Luz De La BoMBiTa!
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 7516
Ubicación: Mexico

MensajePublicado: 15/10/2008 6:25 am
Título:

Lo mejor en estos casos es buscar en sitios especializados como codeproject, sourceforge, etc. o bien mediante un buscador decente terminos como:

source code win32 simple ftp server

Uno de los listados en Google (tal vez te sea de utilidad, tal vez no) para MS Windows y compilado con Microsoft Visual C (no indican version) es FTPDMIN.

Un saludo
_________________
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Volver arriba
WaRc3L



Registrado: 12 Jun 2008
Mensajes: 199
Ubicación: en el registro de la CPU

MensajePublicado: 15/10/2008 8:05 am
Título:

Muchas gracias por tu respuesta rir3760!
Voy a ver que tal va, y si aun tengo alguna dudilla posteare en el foro oks?


Muchas gracias, de verdad, lo necesitava!
_________________
ToDos PoDeMoS CoMpaRTiR La Luz De La BoMBiTa!
Volver arriba
Diabliyo



Registrado: 14 Abr 2004
Mensajes: 346
Ubicación: En la Luna

MensajePublicado: 17/10/2008 6:19 am
Título:

Tambien puedes buscar el RFC del FTP y encontrar como se inicia una session ftp con comandos, etc, etc... Todo eso lo harias en tu socket Very Happy.

Si buscas proyectos, estarias ligado a entender la logica de programacion del codigo que te bajes Very Happy !!...

bye bye
_________________

Volver arriba
WaRc3L



Registrado: 12 Jun 2008
Mensajes: 199
Ubicación: en el registro de la CPU

MensajePublicado: 18/10/2008 12:53 pm
Título:

Gracias Diabliyo, pero creo que me falta un poco mas por aprender por hacer un verdadero servidor FTP, lo que estoy haciendo ahora es solo unas pequeñas funciones que se devuelven ficheros entre ellos, lista los programas de un directorio ( con dir ... ) etc..

No hago nada del modo PASIVO, o el comando PORT, y no necesitas logearte para poder entrar en mi servidor... eso es, un servidor FTP a lo cutre xD

Quando, aprende mas sobre los sockets, los hilos ( que he visto que en el codigo fuente de rir3760, hay algunos... y no entiendo casi nada ) y todo eso, hare un servidor FTP bueno, con comandos, y que se puede conectar en el puerto 21, y cosas asi, ya me entiendes.

Muchas gracias, dare un vistazo a los RFC.

Saludos!
_________________
ToDos PoDeMoS CoMpaRTiR La Luz De La BoMBiTa!
Volver arriba
Diabliyo



Registrado: 14 Abr 2004
Mensajes: 346
Ubicación: En la Luna

MensajePublicado: 19/10/2008 9:09 am
Título:

WaRc3L escribió:
Gracias Diabliyo, pero creo que me falta un poco mas por aprender por hacer un verdadero servidor FTP, lo que estoy haciendo ahora es solo unas pequeñas funciones que se devuelven ficheros entre ellos, lista los programas de un directorio ( con dir ... ) etc..

No hago nada del modo PASIVO, o el comando PORT, y no necesitas logearte para poder entrar en mi servidor... eso es, un servidor FTP a lo cutre xD

Quando, aprende mas sobre los sockets, los hilos ( que he visto que en el codigo fuente de rir3760, hay algunos... y no entiendo casi nada ) y todo eso, hare un servidor FTP bueno, con comandos, y que se puede conectar en el puerto 21, y cosas asi, ya me entiendes.

Muchas gracias, dare un vistazo a los RFC.

Saludos!


Yo creo que con los conocimientos simples que tienes puedes hacerte un Servidor FTP, solamente aprende a utilizar la funcion select(), para ello te recomiendo leas este manul: Guia Beej

bye bye
_________________

Volver arriba
WaRc3L



Registrado: 12 Jun 2008
Mensajes: 199
Ubicación: en el registro de la CPU

MensajePublicado: 19/10/2008 9:59 am
Título:

GRACIAS DIABLYO! me has dado animos! Very Happy , intentare hacer el servidor de verdad, intentare hacer servir la funcion select, ( que me suena de algo, pero ahora no se que es ) , y hare un servidor FTP, de verdad! por cierto, gracias por el manual.

He visto que en el codigo fuente de rir3760, hay hilos, ( beginthread y cosas asi), los necesito obligatoriamente? por que yo aun no se nada de ellos, se que sirve para conectar dos programas o algo asi.

Solo dime una cosa, tengo que hacer todos los comandos para que sea un buen FTP? , porque, depende de los clientes, por ejemplo, el ftp de ms-dos ( sin usar telnet ) , tiene diferentes comandos, pero, funciona con el codigo fuente de rir3760, y eso no lo acabo de entender mucho...

Saludos y gracias por tus animos! Very Happy
_________________
ToDos PoDeMoS CoMpaRTiR La Luz De La BoMBiTa!
Volver arriba
Diabliyo



Registrado: 14 Abr 2004
Mensajes: 346
Ubicación: En la Luna

MensajePublicado: 19/10/2008 11:02 am
Título:

WaRc3L escribió:
GRACIAS DIABLYO! me has dado animos! Very Happy , intentare hacer el servidor de verdad, intentare hacer servir la funcion select, ( que me suena de algo, pero ahora no se que es ) , y hare un servidor FTP, de verdad! por cierto, gracias por el manual.

He visto que en el codigo fuente de rir3760, hay hilos, ( beginthread y cosas asi), los necesito obligatoriamente? por que yo aun no se nada de ellos, se que sirve para conectar dos programas o algo asi.

Solo dime una cosa, tengo que hacer todos los comandos para que sea un buen FTP? , porque, depende de los clientes, por ejemplo, el ftp de ms-dos ( sin usar telnet ) , tiene diferentes comandos, pero, funciona con el codigo fuente de rir3760, y eso no lo acabo de entender mucho...

Saludos y gracias por tus animos! Very Happy


En el RFC de FTP encontraras todos los comandos que existen para interactuar con un FTP, si tu implementas los comandos especificados en el RFC de FTP, tu servidor funcionara con cualquier FTP-Cliente. Ver RFC

Los procesos e hilos son una alternativa mejorada cuando no deseas utilizar select().

La funcion select() te permite tener una base de datos de todos los clientes conectados a tu programa, select() orillara a tu programa a quedarse dormido (en la llamada a select()) hasta que exista alguna interaccion con tu programa por parte de un cliente, esta interaccion podria ser: una nueva conexion o envio de datos de un cliente, cuando algo llega al puerto del programa, select() despertara y te permitira realizar alguna tarea con dicho socket, al finalizar la peticion, consulta o nueva conexion del cliente, select() volvera a dormir hasta que llegue algo mas. En pocas palabras la interaccion servidor-cliente sera uno a uno, de modo que si existen dos clientes, el segundo cliente debe esperar a que el primer cliente termine de interactuar. OJO interactuar no significa que esto se aplica desde que se conecta hasta que finaliza una peticion, sino que es cuando el cliente obtiene respuesta a su peticion.

Ejemplo:
Código:
Servidor Abre SOCKET TCP, Puerto 1010.
Servidor invoca SELECT().
Servidor queda Dormido Zzzzzz

Cliente 1 inica conexion con Servidor en Puerto 1010.
Servidor Despierta y atiende la conexion aceptandolo.
Servidor queda Dormido Zzzzzz

Cliente 2 inicia conexion con Servidor
Servidor Despierta y atiende la conexion aceptandolo.
Servidor queda Dormido Zzzzzz

Cliente 1 envia comando "listafiles"
Servidor Despierta y atiende la peticion
Servidor queda Dormido Zzzzzz

Cliente 2 envia comando "listafiles"
Servidor Despierta y atiende la peticion
Servidor queda Dormido Zzzzzz


Los procesos e hilos te permitiran hacer que tu programa cree un nuevo proceso o hilo (segun como lo quieras) para cada cliente, de modo que todos los clientes pueden estar interactuando a la vez con tu servidor. Pero si deseas implementar procesos e hilos debes estudiar un poco sobre ellos Very Happy.

bye bye
_________________

Volver arriba
WaRc3L



Registrado: 12 Jun 2008
Mensajes: 199
Ubicación: en el registro de la CPU

MensajePublicado: 19/10/2008 12:41 pm
Título:

Muchisimas gracias Diabliyo!, intentare estudiar a profundo eso de los hilos, que veo que es importante jeje, de mientras, ire haciendo el servidor FTP con la funcion select.

Muchas gracias por tu ayuda, de veras!

Saludos!
_________________
ToDos PoDeMoS CoMpaRTiR La Luz De La BoMBiTa!
Volver arriba
cheroky



Registrado: 22 Sep 2005
Mensajes: 2556
Ubicación: Valladolid (España)

MensajePublicado: 20/10/2008 12:03 am
Título:

Tomalo con reservas pero yo creo que estas empezando la casa por el tejado. Hacer un servidor para el protocolo FTP no es tarea sencilla. Yo comenzaría por cosas mas didácticas, consolidar conceptos de redes, repasar de forma general la torre de protocolos OSI, hacer algún programa de chat sencillo, de transferencia básica de ficheros, implementar tu propio protocolo a nivel de aplicación, etc. Con esto no quiero desanimarte pero es mas divertido y se aprende más logrando "pequeños" objetivos.


S2.
_________________
La cuestión no es si hay vida inteligente en otros planetas lejanos. La cuestión es si hay vida inteligente aquí.
Volver arriba
      Índice del Foro elrincondelc.com -> Programación en Servidores
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com