Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - fabricioom

Páginas: [1]
1
Hola muchachos excelente dia les comento que tengo un mini programa de Sockets en Java que trabaja con bases de datos MySql que consta de 9 clases que son Proceso_ftp.java, acceso_usuario.java, db_usuario.java, descargar.java, directorio_FTP.java, elimina_FTP.java, guarda_FTP.java, lecturageneral.java, lecturaparametro.java

Hay 4 formularios, el formulario 0 es la interfaz primera del programa con 1 opcion de usuario para registrarnos con sus respectivos campos y otra opcion de proceso ftp que sera de los proceso ftp que podremos interactuar siempre y cuando estemos registrados en la opcion anterior con la clave generada y la imagen del programa.

El formulario 1 consta de 6 botones que son para buscar archivos en directorio ftp que tengamos guardados, lectura general archivo txt desde servidor ftp, lectura archivo txt por parametro es para consulta individual solo para archivos txt, de descargar de ftp de los que tengamos guardados, para guardar ftp y eliminar archivos ftp.

El formulario 2 es del registro de usuarios que ya habia mencionado.

El formulario 3 para logearnos.

Igual para que no se haga muy extenso las clases y los formularios las adjuntaré el código en un bloc de notas para que me entiendan mejor.

Este mini software es una tarea que dejaron que ya he hecho 4 items de los 5 que me pidieron pero en el ultimo no sé cómo hacerlo y el código va implementado en la clase guarda_FTP.java en donde está el comentario que dice //Codigos de la tarea que me falta igual y el ultimo items me pide:

Tema desarrollo (códigos agregados)       
           
Cuente cuantos archivos con extensión TXT, DOCXS, XLS se han eliminado.                       
Archivos por utilizar: Directorio_FTP, Elimina_FTP
Mecanismo: Cree la clase y los controles gráficos.

Solo eso me pide porque el resto ya lo realizé igual estará adjuntado en el bloc de notas que pondré  con sus clases y formularios, este software admite la mayoria de archivos y en donde va el código de lo que me pide puse un ejemplo parecido consultando desde mis conocimientos y apoyandome de la web, gracias de antemano por sus  respaldo sigamos asi. :)

Igual pondre la clase guarda_FTP.java a continuación:


Código: [Seleccionar]

//Hilo: Guardar archivo en servidor FTP

package proceso_ftp;

import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;


public class guarda_FTP implements Runnable { //interfaz runnable
   
@Override  //sobreescribe metodo de clase padre   
public void run(){ //Ejecuta proceso hilo
   
    String verarchi1,verarchi2;
    int opcion=0;
 
    FTPClient client = new FTPClient();
    try {
       client.connect("213.190.6.10");
         
      boolean acceso = client.login("u312507976.usuario1","Use-1234"); //usuario,clave
     
      if (acceso==true) {
         
        //Grafica de directorio archivo desde C:/
        JFileChooser dlg = new JFileChooser();
        dlg.setCurrentDirectory(new File("C:/"));
        opcion = dlg.showOpenDialog(dlg);
 
      //Si existe el archivo 
      if(opcion==JFileChooser.APPROVE_OPTION) {
        verarchi1= dlg.getSelectedFile().getPath();
        verarchi2= dlg.getSelectedFile().getName();
 
         client.setFileType(FTP.BINARY_FILE_TYPE);
         client.enterLocalPassiveMode();
       
         File archi=new File(verarchi1);
         FileInputStream canal=new FileInputStream(archi); 
             
         [b]//Codigos de la tarea que me falta, aqui va lo que me piden y segun son como 10 o 15 lineas de codigo, igual yo consutando es parecido a esto:
         
         File carpeta = new File(sCarpAct);
String[] listado = carpeta.list();
if (listado == null || listado.length == 0) {
    System.out.println("No hay elementos dentro de la carpeta actual");
    return;
}
else {
    for (int i=0; i< listado.length; i++) {
        System.out.println(listado[i]);
    }
}          //Ovbiamente creo que iria un contador en el codigo, hasta aqui iria lo que me pide  [/b]

       
         boolean guarda=client.storeFile(verarchi1, canal);
   
        if (guarda)
        {JOptionPane.showMessageDialog(null,"Archivo guardado en FTP");
          client.rename(verarchi1, verarchi2);}}
   
         if(opcion==JFileChooser.CANCEL_OPTION)
        {JOptionPane.showMessageDialog(null, "Accion cancelada por el usuario");} }           
   
  } catch (IOException ex) {
        Logger.getLogger(guarda_FTP.class.getName()).log(Level.SEVERE, null, ex);
    } } }


Nota: para descargar el código adjunto es necesario estar logado en el foro.

2
Hola mi gente, pido ayuda con un problema que he avanzado algo pero ya no sé cómo
implementarlo me pidieron esto:

Crear la data de 2 millones de registros con datos:

VENTA (codi,ciudad,fecha,valor)

fecha entre año 2016 a 2020, valor entre 1 a 5000

- Hilo1: Suma de valores>3000 de los años 2017, 2018, 2019
- Hilo2: De los años 2018, 2019, 2020 cual es el valor menor y mayor

Cada hilo muestre los tiempos de proceso y resultados planteados.

Para esto me dieron 2 proyectos para modificarlos y a la vez implementar lo que me han pedido y estos son los 2 proyectos:


PROYECTO 1

Código: [Seleccionar]
Proyecto 1
Consta de: PruebaHilo1java, clase1.java y un formulario
//Prueba-hilo1
//Guardar 10000 registros: codigo,valor,fecha


package prueba.hilo1;

public class PruebaHilo1 {

public static void main(String[] args) {
 formu1 formu = new formu1();formu.setVisible(true);
 }       
 
}

La clase 1
package prueba.hilo1;

import javax.swing.*;
import java.io.*;
import java.sql.Date;
import java.sql.Timestamp;
import java.util.Random;

public class clase1 {
   
File file1;
FileWriter archi1;
PrintWriter archi2;
FileReader archi3;
BufferedReader archi4;

String carpe="c:/prueba";
String archivo1="archivo1.txt";
String archivo2="archivo2.txt";
String archivofin="";

String cadena1;
String codi;
String nom;
float valo;

//limpia entrada
public void limpia_entrada() {
formu1.z1.setText("");formu1.a1.setText("");
}

//Generar1 archivo1.txt 1 MILLON DE REGISTROS CLIENTE (codigo,valor,fecha)
public void generar1() throws IOException {
file1=new File(carpe+"/"+archivo1);
archi1 = new FileWriter(file1,true);archi2 = new PrintWriter(archi1);

//Genera 1 millon registros 10000 clientes y cada cliente 100 registro

int a=0;
for (int i = 0; i < 10000; i++) {a++;
for (int j = 0; j < 100; j++) {
   
//Generar codigo U1, U2, U3, U4... (100 de cada uno)
codi="U"+a;

//Genera numero entre 1 y 1000
valo=(float)(Math. random()*1000+1);   

//Genera fecha entre 2000-01-01 y 2010-12-31
long fechini=Timestamp.valueOf("2000-01-01 00:00:00").getTime();
long fechfin=Timestamp.valueOf("2010-12-31 00:00:00").getTime();
long difech=fechfin-fechini+1;
long fecha1=(long)(Math. random()* difech+fechini);   
Date fecha = new Date(fecha1);

//Guarda en archivo plano: codigo;valor;fecha
archi2.write(codi+";"+valo+";"+fecha+"\n");} } 
JOptionPane.showMessageDialog(null,"Archivo generado");archi1.close();

}

//Generar1 archivo2.txt 1 MILLON DE REGISTROS CLIENTE (codigo,nombres,ciudad)
public void generar2() throws IOException {
file1=new File(carpe+"/"+archivo2);
archi1 = new FileWriter(file1,true);archi2 = new PrintWriter(archi1);

//Genera 1 millon registros 10000*100
int a=0;
for (int i = 0; i < 10000; i++) {

a++;
Random b = new Random();
//Genera ciudad
String[] ciu = {"Manta","Portoviejo","Chone","Montecristi","Jipijapa"};
int e1 = b.nextInt(ciu.length);

for (int j = 0; j < 100; j++) {

//Generar codigo U1, U2, U3, U4... (100 de cada uno)
//Generar nombre AZ1, AZ2, AZ3...

codi="U"+a;nom="AZ"+a;
//Guarda en archivo plano: codigo;nombres;ciudad
archi2.write(codi+";"+nom+";"+ciu[e1]+"\n");} } 
JOptionPane.showMessageDialog(null,"Archivo generado");archi1.close();

}


//Consulta individual1 Archivo.txt por el primer campo = CODIGO
public void consu_individual1() throws IOException  {
archivofin=archivo1;consu_individual();}

//Consulta individual2 Archivo.txt por el primer campo = CODIGO
public void consu_individual2() throws IOException  {
archivofin=archivo2;consu_individual();}

public void consu_individual() throws IOException  {
formu1.z1.setText("");
file1=new File(carpe+"/"+archivofin);
archi3 = new FileReader(file1);archi4 = new BufferedReader(archi3);
cadena1=archi4.readLine();

//De cadena codigo;valor;fecha extraer datos de CODIGO
String codi=formu1.a1.getText();
while(cadena1!=null){String dato="";
for (int i = 0; i < cadena1.length()-1; i++) {
String car=String.valueOf(cadena1.charAt(i));       
if (";".equals(car)) {break;} else {dato=dato+car;}}
if (codi.equals(dato)) {formu1.z1.append(cadena1+"\n");}
cadena1=archi4.readLine();}}
//   U1;34;12-12-2000

//Consulta general1 de Archivo1.txt
public void consu_general1() throws IOException  {
archivofin=archivo1;consu_general();}

//Consulta general1 de Archivo2.txt
public void consu_general2() throws IOException  {
archivofin=archivo2;consu_general();}

public void consu_general() throws IOException  {
formu1.z1.setText("");
file1=new File(carpe+"/"+archivofin);
archi3 = new FileReader(file1);archi4 = new BufferedReader(archi3);
cadena1=archi4.readLine();
while(cadena1!=null){
if (cadena1!=null) {formu1.z1.append(cadena1+"\n");}
cadena1=archi4.readLine();}}

//Crear carpeta/archivo Archivo1.txt
public void crear_carpe_archi1() throws IOException  {
archivofin=archivo1;carpe_archi();}

//Crear carpeta/archivo Archivo2.txt
public void crear_carpe_archi2() throws IOException  {
archivofin=archivo2;carpe_archi();} 

public void carpe_archi() throws IOException  {
file1 = new File(carpe);
if (!file1.exists()) {
   if (file1.mkdirs()) {JOptionPane.showMessageDialog(null,"Carpeta creada");}}
   else {JOptionPane.showMessageDialog(null,"Carpeta ya existe");}
file1 = new File(carpe+"/"+archivofin);
if (!file1.exists()) {
if (file1.createNewFile()) {JOptionPane.showMessageDialog(null,"Archivo.txt creado");}}
  else {JOptionPane.showMessageDialog(null,"Archivo ya existe");} }

}



Y el formulario.



PROYECTO 2

El proyecto 2 lo adjunto en un archivo de texto plano (bloc de notas) porque son 11 clases (Consta de : PruebaHilo2.java, archivo.java, clase1.java, dos_hilos1.java, dos_hilos2.java, sinhilo.java, tres_hilo1.java, tres_hilo2.java, tres_hilo3.java, un_hilo.java y un formulario.)

Y lo que he hecho hasta ahora es solo crear 2 hilos como me lo pide pero sin la función de cada hilo asi:

Código: [Seleccionar]
package prueba.hilo3;

import prueba.hilo3.formu1;
import java.io.*;

public class archivo {
   
File file1;
FileWriter archi1;
PrintWriter archi2;
FileReader archi3;
BufferedReader archi4;

String carpe="c:/prueba";
String archivo1="archivo1.txt";
String archivo2="archivo2.txt";
String archivofin="";
String cadena1;

void declara_archivo() throws FileNotFoundException, IOException {
formu1.z1.setText("");formu1.z1.append("Procesando...\n");
file1=new File(carpe+"/"+archivofin);
archi3 = new FileReader(file1);archi4 = new BufferedReader(archi3);
cadena1=archi4.readLine();
   
}
}


package prueba.hilo3;

import java.io.FileNotFoundException;
import java.io.IOException;
import prueba.hilo3.formu1;
/**
 *
 * @author 59399
 */
public class clase1 {
    public void limpia_entrada() {
formu1.z1.setText("");}
   
//HILO1:CALCULA SUMA DE VALORES >3000 DE LOS AÑOS 2017, 2018, 2019
void unhilo() {
  un_hilo hilo1=new un_hilo();hilo1.start();     
}
 
//CALCULA HILO2: DE LOS AÑOS 2018, 2019, 2020 CUAL ES EL VALOR MENOR Y MAYOR
void doshilo() {
 dos_hilo1 hilo1=new dos_hilo1();
 hilo1.start();}
   
}

//DOS HILO1: Cuenta valor entre 1 y 500 de 1 millón registros CLIENTE(codigo,valor,fecha)

package prueba.hilo3;

import prueba.hilo3.formu1;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;


public class dos_hilo1  extends Thread { //heredado Thread{

@Override  //sobreescribe metodo de clase padre   
public void run(){ //Ejecuta proceso
long tiempoini= System.currentTimeMillis();
float c1=0,c2=0,c3=0,c4=0,c5=0,c6=0;

archivo vari=new archivo();
    try {
         vari.archivofin=vari.archivo2;vari.declara_archivo();
    } catch (IOException ex) {
        Logger.getLogger(dos_hilo1.class.getName()).log(Level.SEVERE, null, ex);
    }

//Busca dato 3 dato de CLIENTE (codigo;nombre;ciudad)
//y cuenta ciudad de MANTA
while(vari.cadena1!=null){String dato="";int a=0;
for (int i = 0; i < vari.cadena1.length(); i++) {
String car=String.valueOf(vari.cadena1.charAt(i));       
if (";".equals(car)) {a++;}
else if (a==2) {if (!";".equals(car)) dato=dato+car;}}
c1++;
if ("Manta".equals(dato)) {c2++;}
if ("Portoviejo".equals(dato)) {c3++;}
if ("Montecristi".equals(dato)) {c4++;}
if ("Jipijapa".equals(dato)) {c5++;}
if ("Chone".equals(dato)) {c6++;}

    try {
        vari.cadena1=vari.archi4.readLine();
    } catch (IOException ex) {
        Logger.getLogger(dos_hilo1.class.getName()).log(Level.SEVERE, null, ex);
    }

}

float ma=0,me=0;
if (c2>c3&&c2>c4&&c2>c5&&c2>c6) {ma=c2;}
if (c3>c2&&c3>c4&&c3>c5&&c3>c6) {ma=c3;}
if (c4>c2&&c4>c3&&c4>c5&&c4>c6) {ma=c4;}
if (c5>c2&&c5>c3&&c5>c4&&c5>c6) {ma=c5;}
else {ma=c6;}
if (c2<c3&&c2<c4&&c2<c5&&c2<c6) {me=c2;}
if (c3<c2&&c3<c4&&c3<c5&&c3<c6) {me=c3;}
if (c4<c2&&c4<c3&&c4<c5&&c4<c6) {me=c4;}
if (c5<c2&&c5<c3&&c5<c4&&c5<c6) {me=c5;}
else {me=c6;}

formu1.z1.append("Total registros: "+String.format("%5.0f",c1)+"\n");
formu1.z1.append("Promedio: "+String.format("%5.2f",c1/5)+"\n");
formu1.z1.append("Mayor cantidad de ciudad: "+String.format("%5.0f",ma)+"\n");
formu1.z1.append("Menor cantidad de ciudad: "+String.format("%5.0f",me)+"\n");

long tiempofinal = System.currentTimeMillis();
formu1.z1.append("Tiempo total: "+(tiempofinal-tiempoini)+" MiliSeg"+"\n");
}
     
   
}

//UN HILO: total de valor de 1 millón registros CLIENTE(codigo,valor,fecha)
package prueba.hilo3;

import prueba.hilo3.formu1;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import prueba.hilo3.archivo;

public class un_hilo extends Thread  { //heredado Thread
 
@Override  //sobreescribe metodo de clase padre   
public void run(){ //Ejecuta proceso
long tiempoini= System.currentTimeMillis();
float sum=0;float cuenta=0;

archivo vari=new archivo();
try {
        vari.archivofin=vari.archivo1;vari.declara_archivo();
    } catch (IOException ex) {
        Logger.getLogger(un_hilo.class.getName()).log(Level.SEVERE, null, ex);
    }

//Busca dato2 VALOR de CLIENTE (codigo;valor;fecha) y realiza sumatoria de valor
while(vari.cadena1!=null){String dato="";int a=0;
for (int i = 0; i < vari.cadena1.length()-1; i++) {
String car=String.valueOf(vari.cadena1.charAt(i));       
if (";".equals(car)) {a++;}
if (a==1) {{if (!";".equals(car)) dato=dato+car;}}
if (a==2) {break;} }
cuenta++;sum=sum+Float.valueOf(dato);

    try {
        vari.cadena1=vari.archi4.readLine();
    } catch (IOException ex) {
        Logger.getLogger(un_hilo.class.getName()).log(Level.SEVERE, null, ex);
    }
}

formu1.z1.append("Total registros: "+String.format("%.0f",cuenta)+"\n");
formu1.z1.append("Total valor: "+String.format("%20.2f",sum)+"\n");
long tiempofinal = System.currentTimeMillis();
formu1.z1.append("Tiempo total: "+(tiempofinal-tiempoini)+" MiliSeg"+"\n");}
}


Y el respectivo formulario. No sé cómo combinar de los 2 proyectos lo que me pide, habrá que implementarlo. Hasta ahí llegué, espero que me respalden muchachos, unas de las mejores páginas para aprender en este mundo de la  programacion.


3
Hola comunidad me presento soy Fabricio Ortiz soy nuevo en la pagina y espero ayudar y aprender mucho de ustedes y pueden contar conmigo un amigo mas para la comunidad:) 8) Quisiera para comenzar que me ayuden con esto. ¿Como hago que el servidor rechaze solo los archivos .exe? El servidor acepta cualquier archivo y  trabajo con socket entre un cliente y servidor ya hice lo que podía pero no sé como implementar esa condición. He visto que con JFileChooser hago eso pero no sé cómo se implementaría y este método o cambio sólo sería en el servidor.

Código: [Seleccionar]
/ENVIO ARCHIVO ENTRE CLIENTE-SERVIDOR
    //Proceso del servidor
    package sockets3_servidor;
   
    import java.io.*;
    import java.net.*;
    import javax.swing.*;
   
   
    public class Sockets3_servidor  {
       
    static Socket cliente=null;
    static ServerSocket servidor = null;
    static String nombreArchivo;
   
   
    public static void main(String[] args) throws IOException {
    JOptionPane.showMessageDialog(null, "SERVICIO INICIADO","Mensaje",JOptionPane.INFORMATION_MESSAGE);
    Sockets3_servidor p = new Sockets3_servidor();
    servidor = new ServerSocket(5000);
    p.iniciarservidor(servidor);
    }
   
   
    public Sockets3_servidor() throws IOException {
    // Creamos socket servidor escuchando en el mismo puerto donde se comunica el cliente
       // en este caso el puerto es el 4400
       System.out.println("ESPERANDO ARCHIVOS COMPATIBLES"); }
   
   
    public  void iniciarservidor(ServerSocket servidor) {   
        while(true) {
            try {
            // Creamos el socket que atendera el servidor
            cliente = servidor.accept();
            // Creamos flujo de entrada para leer los datos que envia el cliente
            DataInputStream dis = new DataInputStream(cliente.getInputStream());
            // Obtenemos el nombre del archivo
            nombreArchivo = dis.readUTF();
            // Obtenemos el tamaño del archivo
            int tam = dis.readInt();
            System.out.println("VERIFICANDO TIPO DE ARCHIVO ");
            // Creamos flujo de salida, este flujo nos sirve para
            // indicar donde guardaremos el archivo       
            //para ello en C: cree la carpeta ARCHIVO   
            FileOutputStream fos = new FileOutputStream(nombreArchivo);
            try (BufferedOutputStream out = new BufferedOutputStream(fos);
            BufferedInputStream in = new BufferedInputStream(cliente.getInputStream())) {
               
               
            // Creamos el array de bytes para leer los datos del archivo
             byte[] buffer = new byte[tam];
             // Obtenemos el archivo mediante la lectura de bytes enviados
             for(int i=0;i<buffer.length;i++) {buffer[i] = (byte)in.read();}
           //Escribimos el archivo
             out.write(buffer);
             //Cerramos los flujos
            out.flush();            }
             cliente.close();
             System.out.println("RECIBIENDO ARCHIVO: "+nombreArchivo);
             
            } catch (IOException e) {System.out.println(""+e.toString());}
            } 
       
       }
   
    }

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".