Pasos mínimos para compilar, configurar y ejecutar servidor y cliente. Para opciones detalladas (Maven, panel Admin, FTPS, solución de problemas), consulta el README.md.
- JDK 8+ (
java -version,javac -version) - Estar en la raíz del proyecto (
java-ftp/)
Classpath: En Windows usa ; (ej. bin;lib\*). En Linux/macOS usa : (ej. bin:lib/*).
if (-not (Test-Path bin)) { New-Item -ItemType Directory -Path bin }
javac -d bin -cp "lib\*" -encoding UTF-8 src\FTP\Client\*.java src\FTP\Server\*.java src\FTP\Util\*.java src\FTP\Admin\*.javamkdir -p bin
javac -d bin -cp "lib/*" -encoding UTF-8 src/FTP/Client/*.java src/FTP/Server/*.java src/FTP/Util/*.java src/FTP/Admin/*.javaComprueba que exista bin/FTP/Server/JavaFtpServer.class.
Elige una de estas dos opciones.
- Crea la carpeta
filessi no existe:mkdir files(omkdir -Force filesen PowerShell). - Ejecuta el panel Admin:
- Windows:
java -cp "bin;lib\*" FTP.Admin.AdminGUI - Linux/macOS:
java -cp "bin:lib/*" FTP.Admin.AdminGUI
- Windows:
- En el panel: ruta
files/ftp_users.db→ Cargar / Abrir (se crea la base y la tabla). - Añadir usuario: nombre
admin, contraseña la que quieras, perfil ADMINISTRADOR. - En
server.properties(raíz del proyecto) pon:ftp.root.directory=filesftp.users.database=files/ftp_users.db
En Windows usa siempre/en las rutas, nunca\.
- Crea el primer usuario (el fichero se crea solo):
- Windows:
java -cp "bin;lib\*" FTP.Server.PasswordTool adduser admin tuPassword ADMINISTRADOR files/users/users.txt - Linux/macOS:
java -cp "bin:lib/*" FTP.Server.PasswordTool adduser admin tuPassword ADMINISTRADOR files/users/users.txt
- Windows:
- En
server.propertiesponftp.root.directory=filesy dejaftp.users.database=vacío.
Con esto el servidor arrancará sin pedir el directorio raíz.
Windows:
java -cp "bin;lib\*" FTP.Server.JavaFtpServerLinux/macOS (puerto 21 puede requerir sudo):
java -cp "bin:lib/*" FTP.Server.JavaFtpServerDeberías ver el banner ASCII y, si configuraste server.properties, el mensaje de directorio raíz y usuarios sin preguntas. Mantén esta terminal abierta.
En otra terminal:
Windows:
java -cp "bin;lib\*" FTP.Client.ClientGUILinux/macOS:
java -cp "bin:lib/*" FTP.Client.ClientGUIO usa los scripts: run-client-gui.bat (Windows) / ./run-client-gui.sh (Linux/macOS).
En la ventana del cliente:
| Campo | Valor |
|---|---|
| HOST | localhost |
| PORT | 21 |
| USER | admin |
| PASS | La que definiste en el paso 2 |
| MODE | PASSIVE |
| Use FTPS (TLS) | Desmarcado (salvo que hayas configurado TLS en el servidor) |
Pulsa ▶ CONNECT. Deberías ver el listado de archivos.
| Botón | Función |
|---|---|
| ↻ REFRESH | Actualizar lista |
| ↑ UPLOAD | Subir archivo |
| ↓ DOWNLOAD | Descargar seleccionado |
| ✕ DELETE | Eliminar archivo |
| + MKD | Crear directorio |
| - RMD | Eliminar directorio |
| ✎ RENAME | Renombrar |
| → CD | Entrar en directorio |
| ← CDUP | Directorio padre |
| ? PWD | Ver ruta actual |
Doble clic en una carpeta = cambiar a ese directorio.
- BASICO: LIST, RETR, CWD, PWD, CDUP (solo lectura).
- INTERMEDIO: Lo anterior + STOR, DELE, renombrar.
- ADMINISTRADOR: Todo + MKD, RMD (gestión de directorios).
| Problema | Qué hacer |
|---|---|
| Servidor pide directorio raíz | Pon ftp.root.directory=files (o tu ruta) en server.properties. En Windows usa / en la ruta. |
| "Archivo de usuarios no existe" | Usa SQLite (ftp.users.database=files/ftp_users.db) o crea usuarios con PasswordTool; en Windows usa / en rutas. |
| Puerto 21 en uso / Permission denied | En server.properties pon ftp.control.port=2121 y conecta al puerto 2121. |
| ClassNotFoundException | Usa classpath bin;lib\* (Windows) o bin:lib/* (Linux/macOS). |
| FTPS no conecta | Marca "Use FTPS (TLS)" solo si configuraste TLS en el servidor (keystore + server.properties). Ver README → Habilitar FTPS (TLS). |
Para compilar con Maven, ejecutar el cliente de consola, migrar usuarios TXT→SQLite o desplegar en producción, consulta el README.md.
By Eduardo Díaz © 2025