elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


  Mostrar Temas
Páginas: [1] 2
1  Programación / Java / JavaFX, conexión por socket en: 25 Junio 2015, 13:05 pm
Buenas a todos gente.

Tengo una preguntilla respecto a este tema, como podria hacer para tener una gui y que a la hora de conectar con el servidor no se me congelase la interface, pongo el código hasdta ahora:

Código
  1. package app;
  2.  
  3. import java.io.IOException;
  4.  
  5. import app.view.NewServerController;
  6. import app.view.RootController;
  7. import javafx.application.Application;
  8. import javafx.fxml.FXMLLoader;
  9. import javafx.scene.Scene;
  10. import javafx.scene.layout.BorderPane;
  11. import javafx.stage.Modality;
  12. import javafx.stage.Stage;
  13.  
  14.  
  15. public class Main extends Application
  16. {
  17.  
  18. private Stage stage;
  19. private BorderPane rootLayout;
  20.  
  21. public static void main(String[] args)
  22. {
  23. launch(args);
  24. }
  25.  
  26. @Override
  27. public void start(Stage stage) throws Exception
  28. {
  29. this.stage = stage;
  30. this.stage.setTitle("Fenrir");
  31.  
  32. initRootLayout();
  33. }
  34.  
  35. public void initRootLayout()
  36. {
  37. try
  38. {
  39. FXMLLoader loader = new FXMLLoader();
  40. loader.setLocation(Main.class.getResource("view/Root.fxml"));
  41. rootLayout = (BorderPane) loader.load();
  42.  
  43. RootController controller = loader.getController();
  44. controller.setMain(this);
  45.  
  46. Scene scene = new Scene(rootLayout);
  47. stage.setScene(scene);
  48. stage.show();
  49. } catch(IOException e)
  50. {
  51. e.printStackTrace();
  52. }
  53. }
  54.  
  55. public boolean showNewServerDialog()
  56. {
  57. try
  58. {
  59. FXMLLoader loader = new FXMLLoader();
  60. loader.setLocation(Main.class.getResource("view/NewServer.fxml"));
  61. BorderPane page = (BorderPane) loader.load();
  62.  
  63. Stage stage = new Stage();
  64. stage.setTitle("Conectar a servidor");
  65. stage.initModality(Modality.WINDOW_MODAL);
  66. stage.initOwner(this.stage);
  67. Scene scene = new Scene(page);
  68. stage.setResizable(false);
  69. stage.setScene(scene);
  70.  
  71. NewServerController controller = loader.getController();
  72. controller.setDialogStage(stage);
  73.  
  74. stage.showAndWait();
  75.  
  76. return controller.isOkCliked();
  77. } catch(IOException e)
  78. {
  79. e.printStackTrace();
  80. return false;
  81. }
  82. }
  83.  
  84. }
  85.  

Código
  1. package app.client;
  2.  
  3. import java.io.DataInputStream;
  4. import java.io.DataOutputStream;
  5. import java.net.Socket;
  6. import java.net.UnknownHostException;
  7.  
  8. public class Client
  9. {
  10.  
  11. private String hostname;
  12. private int puerto;
  13. Socket socket;
  14. DataInputStream entrada;
  15.  
  16. public Client(String hostname, int puerto)
  17. {
  18. this.hostname = hostname;
  19. this.puerto = puerto;
  20. }
  21.  
  22. public boolean InitClient()
  23. {
  24. try
  25. {
  26. socket = new Socket(hostname, puerto);
  27. entrada = new DataInputStream(socket.getInputStream());
  28. mensaje = new DataOutputStream(socket.getOutputStream());
  29. System.out.println(entrada.readUTF());
  30. mensaje.writeUTF("Hola que tal!");
  31. System.out.println(entrada.readUTF());
  32. socket.close();
  33. {
  34. e.printStackTrace();
  35. return false;
  36. } catch(Exception e)
  37. {
  38. e.printStackTrace();
  39. return false;
  40. }
  41. return true;
  42. }
  43.  
  44. }
  45.  

Código
  1. package app.view;
  2.  
  3. import org.controlsfx.dialog.Dialogs;
  4.  
  5. import app.client.Client;
  6. import javafx.fxml.FXML;
  7. import javafx.scene.control.TextField;
  8. import javafx.stage.Stage;
  9.  
  10. public class NewServerController
  11. {
  12. @FXML
  13. private TextField hostnameIpTextField;
  14. @FXML
  15. private TextField puertoTextField;
  16. @FXML
  17. private TextField userTextField;
  18. @FXML
  19. private TextField passwordTextField;
  20. @FXML
  21. private TextField nameTextField;
  22.  
  23. private Stage stage;
  24. private boolean okClicked = false;
  25.  
  26. public void setDialogStage(Stage stage)
  27. {
  28. this.stage = stage;
  29. }
  30.  
  31. public boolean isOkCliked()
  32. {
  33. return okClicked;
  34. }
  35.  
  36. private boolean isInputValid()
  37. {
  38. String errorMessage = "";
  39.  
  40. if(hostnameIpTextField.getText() == null
  41. || hostnameIpTextField.getText().length() == 0)
  42. errorMessage += "Hostname/Ip no válido!\n";
  43. if(puertoTextField.getText() == null
  44. || puertoTextField.getText().length() == 0
  45. || Integer.parseInt(puertoTextField.getText()) < 0
  46. || Integer.parseInt(puertoTextField.getText()) > 65535)
  47. errorMessage += "Puerto no válido!\n";
  48. if(errorMessage.length() == 0)
  49. {
  50. return true;
  51. } else
  52. {
  53. Dialogs.create()
  54.            .title("Campos inválidos")
  55.            .masthead("Por favor, corrige los campos no válidos")
  56.            .message(errorMessage)
  57.            .showError();
  58.        return false;
  59. }
  60. }
  61.  
  62. @FXML
  63. private void handleConectar() throws InterruptedException
  64. {
  65. if(isInputValid())
  66. {
  67. Client client = new Client(hostnameIpTextField.getText(), Integer.parseInt(puertoTextField.getText()));
  68. boolean connected = client.InitClient();
  69. if(connected)
  70. {
  71. okClicked = true;
  72. stage.close();
  73. }
  74. }
  75. }
  76.  
  77. @FXML
  78. private void handleCancelar()
  79. {
  80. stage.close();
  81. }
  82.  
  83. }
  84.  

Código
  1. package app.view;
  2.  
  3. import javafx.fxml.FXML;
  4. import app.Main;
  5.  
  6. public class RootController
  7. {
  8.  
  9. private Main main;
  10.  
  11. public void setMain(Main main)
  12. {
  13. this.main = main;
  14. }
  15.  
  16. @FXML
  17. private void handleNewServer()
  18. {
  19. boolean okClicked = main.showNewServerDialog();
  20. }
  21.  
  22. }
  23.  

Imagino que se hará la ejecución de la conexión del socket en un thread a parte, pero no me acaba de quedar claro como haría la trata de errores en el thread.

La idea que tenia era que en cuanto le de a conectar, me abra el socket en un thread separado para que la interface no se congele y en cuanto se conecte correctamente  (o no) avise al thread principal para que actue en consecuencia.

Un saludo y gracias de antemano.
2  Programación / Desarrollo Web / Cargar web en diálogo en: 17 Junio 2015, 00:28 am
Buenas a todos,

tengo una dudilla sobre una aplicación web que vi hace un tiempo en la que llevaban acabo una acción que ahora quiero replicar.

La aplicación era de gestión de un centro pero lo que realmente me interesa era que mediante un exe, abrían una especie de diálogo a través de chrome, este diálogo no tenia ni barra ni nada solo se veía lo web y la típica X de cerrar.

Me gustaría saber como hacían esto o si hay alguna alternativa.

Un saludo y gracias de antemano.
3  Programación / Desarrollo Web / Hostings warez, se comen? en: 11 Mayo 2015, 20:25 pm
Buenas gente, he estado leyendo sobre el tema pero no me acaba de quedar claro.

Tengo dos preguntas clave:

1)

Bien empiezo desde el comienzo.

Hoy en día para tener contenido ilegal protegido por copyright o no (las web pornográficas son un ejemplo), digamos mejor que para tener contenido sensible un hosting normal no sirve ya que la mayoría tienen ciertos términos que prohíben dicho contenido.

Bien me he puesto a indagar y por lo visto la alternativa a estos hostings, son los warez, hostings que tienen una política de privacidad en la que protegen al cliente (de la DMCA en general).

Según he estado leyendo recomiendan hostings de holanda suiza o de los países del este.

Hasta aquí todo claro, pero lo que no acabo de entender es como alojar los archivos, supongamos, si quisiera hacer una web de leer cómics online, por decir algo. Que sería lo recomendable, contratar un hosting warez para alojar la web y luego aparte otro para alojar los ficheros?

Ya que estoy me gustaría saber que servidores warez recomiendan.

2)

Si una persona tuviese ya su web montada y quisiese hacerla rentable con una api de publicidad, como lo haría?, la mayoría de apis en sus términos dicen explícitamente que no puedes utilizarla en webs de contenido protegido por copyright.

Si hay alguna api de publicidad que no tenga éste requisito me gustaría saber de ella.

Un saludo y gracias de antemano.
4  Programación / Desarrollo Web / Scraping legal, pero hasta que punto en: 6 Marzo 2015, 11:22 am
Buenas gente, un placer estar de nuevo por aquí.

He estado leyendo acerca del Web Scraping los últimos días y he encontrado opiniones dispares sobre si es una práctica legal o no (dejando de lado la ética de la misma).

Algunos dicen que si es legal pero..., me explico, por lo visto si la información que se extrae esta sujeta a "creative commons" y tu la coges sin permiso del autor para ganar algún tipo de beneficio económico por ejemplo publicándola en tu web sería ilegal siempre y cuando el autor diga explícitamente que no puedes hacerlo.

Otro ejemplo sería si a causa de este scraping se genera una denegación de servicio o cualquier mal funcionamiento en los servidores de la web.

Pues bien, después de escribir esto que no se si tiene o no sentido, me gustaría saber si alguien está puesto en el tema.

Os expongo mi duda, si una persona tiene X contenido, por ejemplo una web de compra online, y yo por scraping extraigo los precios productos y demás para publicarlo en mi web con el objetivo de hacer un comparador con otras webs de la misma índole, ésto sería ilegal si la web la publico para el uso de otra gente?

Os muestro un ejemplo real:

LINK: http://www.pccomponentes.com/avisolegal.html

Citar
Propiedad Intelectual e Industrial
Todos los signos distintivos, marcas, nombres comerciales, contenidos, estructura, diseño y forma de presentación de los elementos y cualquier otra información que aparezca en este sitio Web son propiedad de PCCOMPONENTES por sí o como cesionaria y están protegidos por los derechos de propiedad industrial e intelectual.
El usuario tiene prohibida la reproducción, transformación, distribución, comunicación pública y, en general cualquier otra forma de explotación de los elementos referidos en el apartado anterior sin autorización expresa de PCCOMPONENTES.
El usuario se abstendrá de emplear medios que puedan suprimir, alterar, eludir o manipular cualesquiera dispositivos de protección o sistemas de seguridad que puedan estar instalados y que comporten un riesgo o daño o inutilización del sitio Web y/o sus contenidos.
PCCOMPONENTES no se responsabiliza del posible uso inapropiado que terceros realicen de esta página Web, ni de la información que a través de ella transmitan a terceros. El uso de los contenidos que pueda hacer el usuario y las eventuales consecuencias, daños o perjuicios que pudiesen derivarse, son de la exclusiva responsabilidad del usuario. PCCOMPONENTES se excluye por los daños y perjuicios de toda naturaleza causados a los usuarios por el uso de enlaces (links), directorios y herramientas de búsqueda, que permiten a los usuarios acceder a sitios Web pertenecientes y/o gestionados por terceros así como de la presencia de virus u otros códigos maliciosos en los contenidos que puedan producir cualquier tipo de daños en el sistema informático, documentos electrónicos o ficheros de los usuarios. PCCOMPONENTES se reserva el derecho de ejercitar las acciones legales que considere oportunas derivadas de cualesquiera usos ilícitos por parte de terceros de los contenidos de su página web.

En éste caso, la web expone claramente que está prohibido hacer scraping de ella, o vamos eso entiendo yo, pero ésto es tan sencillo?, es decir yo tengo una web cualquiera y solo con poner que no puedes coger datos de ella ya es imposible legalmente hacerlo? no tienen que sacar ningún tipo de licencia de "creative commons"?

Perdón por preguntar tanto pero es que me quiero informar mucho sobre éste tema.

Un saludo y gracias de antemano.
5  Programación / PHP / PHP, Curl y facebook en: 4 Marzo 2015, 20:34 pm
Buenas gente, cuanto tiempo

bien estoy practicando crawling y scraping en php, y estoy mirando a ver si se puede leer el código de una página cualquiera de facebook, para mi sorpresa cuando leo la url con curl, este no me devuelve nada.

Imagino que es debido a que facebook ya tiene contramedidas contra bots, pero me gustaría saber si hay alguna manera de hacerlo sin utilizar la propia api de facebook.

Un saludo y gracias de antemano.
6  Programación / Java / Pintar celdas de JTable al hacer clic en: 23 Junio 2014, 14:06 pm
Primeramente buenas a todos.

Bueno estoy empezando a mirar temas de heurísitica y he empezado haciendo la búsqueda del recorrido mas corto con el algoritmo A*.

Hasta aquí todo bien, pero me surge un problema y es que para testear todo esto, quiero hacer una JTable que al yo clicar en una celda de color blanco esta se pinte de color negro para dar a entender a la aplicación que es una celda infranqueable por el contrario si clico en una negra, se volverá blanca.

Básicamente el problema es que cuando selecciono la celda blanca, me vuelve negras esa y todas las siguientes.

A ver si me pudieseis echar una mano.

Código
  1. package base;
  2.  
  3. import graphics.Gui;
  4.  
  5. public class Main {
  6.  
  7. public static void main(String[] args) {
  8. new Gui();
  9. }
  10.  
  11. }
  12.  

Código
  1. package graphics;
  2.  
  3. import java.awt.event.WindowAdapter;
  4. import java.awt.event.WindowEvent;
  5. import javax.swing.JFrame;
  6. import javax.swing.JTable;
  7.  
  8. public class Gui extends JFrame
  9. {
  10.  
  11. /**
  12. *
  13. */
  14. private static final long serialVersionUID = 1L;
  15. private ExampleTableModel model = new ExampleTableModel();
  16. private JTable table = new JTable(model);
  17.  
  18. public Gui()
  19. {
  20. table.setRowHeight(30);
  21. table.setTableHeader(null);
  22. table.setCellSelectionEnabled(true);
  23. table.setCellSelectionEnabled(false);
  24. MyDefaultTableCellRenderer renderer = new MyDefaultTableCellRenderer();
  25. table.setDefaultRenderer(String.class, renderer);  
  26. JFrame frame = new JFrame();
  27. frame.setSize(500, 500);
  28. frame.addWindowListener(
  29. {
  30. public void windowClosing(WindowEvent e)
  31. {
  32. System.exit(0);
  33. }
  34. }
  35. );
  36. frame.getContentPane().add(table);
  37. frame.setResizable(false);
  38. frame.setVisible( true );
  39. }
  40. }
  41.  

Código
  1. package graphics;
  2.  
  3. import javax.swing.table.AbstractTableModel;
  4.  
  5. public class ExampleTableModel extends AbstractTableModel
  6. {
  7.    /**
  8. *
  9. */
  10. private static final long serialVersionUID = 1L;
  11. private final String[] columnNames = {"", "", "", "", "", "", "", "", "", "", "", "", ""};
  12.    final Object[][] data = {
  13.        {"", "", "", "", "", "", "", "", "", "", "", "", ""},
  14.        {"", "", "", "", "", "", "", "", "", "", "", "", ""},
  15.        {"", "", "", "", "", "", "", "", "", "", "", "", ""},
  16.        {"", "", "", "", "", "", "", "", "", "", "", "", ""},
  17.        {"", "", "", "", "", "", "", "", "", "", "", "", ""},
  18.        {"", "", "", "", "", "", "", "", "", "", "", "", ""},
  19.        {"", "", "", "", "", "", "", "", "", "", "", "", ""},
  20.        {"", "", "", "", "", "", "", "", "", "", "", "", ""},
  21.        {"", "", "", "", "", "", "", "", "", "", "", "", ""},
  22.        {"", "", "", "", "", "", "", "", "", "", "", "", ""},
  23.        {"", "", "", "", "", "", "", "", "", "", "", "", ""},
  24.        {"", "", "", "", "", "", "", "", "", "", "", "", ""},
  25.        {"", "", "", "", "", "", "", "", "", "", "", "", ""},
  26.        {"", "", "", "", "", "", "", "", "", "", "", "", ""}
  27.    };
  28.  
  29.    @SuppressWarnings("unchecked")
  30. public Class getColumnClass(int column)
  31.    {
  32.        return getValueAt(0, column).getClass();
  33.    }
  34.    public int getColumnCount()
  35.    {
  36.        return columnNames.length;
  37.    }
  38.    public String getColumnName( int column )
  39.    {
  40.        return columnNames[column];
  41.    }
  42.    public int getRowCount()
  43.    {
  44.        return data.length;
  45.    }
  46.    public Object getValueAt( int row, int column )
  47.    {
  48.        return data[row][column];
  49.    }
  50.    public void setValueAt(Object value, int row, int column)
  51.    {
  52.     data[row][column] = value;
  53.    }
  54. }

Código
  1. package graphics;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import javax.swing.JTable;
  6. import javax.swing.table.DefaultTableCellRenderer;
  7.  
  8. public class MyDefaultTableCellRenderer  extends DefaultTableCellRenderer
  9. {
  10.  
  11. /**
  12. *
  13. */
  14. private static final long serialVersionUID = 1L;
  15. private Color [] colors = {Color.WHITE,
  16. Color.BLACK};
  17.  
  18. public Component getTableCellRendererComponent
  19. (JTable table, Object value, boolean isSelected,
  20. boolean hasFocus, int row, int column)
  21. {
  22. Component cell = super.getTableCellRendererComponent
  23. (table, value, isSelected, hasFocus, row, column);
  24.  
  25. setBorder(noFocusBorder);
  26.  
  27. if(row == table.getSelectedRow() && column == table.getSelectedColumn()) {
  28. System.out.println("Recorriendo " + row + " - " + column + "\nSeleccionada " + table.getSelectedRow() + " - " + table.getSelectedColumn());
  29. if(cell.getBackground().equals(colors[1]))
  30. {
  31. System.out.println("Pinto Blanco");
  32. cell.setBackground(Color.WHITE);
  33. } else if(cell.getBackground().equals(colors[0]))
  34. {
  35. System.out.println("Pinto Negro");
  36. cell.setBackground(Color.BLACK);
  37. }
  38. }
  39.  
  40. return cell;
  41. }
  42.  
  43. }
  44.  

Un saludo y gracias de antemano
7  Programación / Java / Conexiones indeseadas, sockets en: 27 Abril 2014, 23:19 pm
Hola gente,

haciendo el servidor de una aplicación de gestión de ficheros, me a surgido una pregunta, si yo hago un servidor y un cliente para que "hablen entre si", otra persona que sniffease su red y averiguase la conversación que mantienen el cliente y el servidor ademas de la dirección y el puerto a donde conecta el cliente, debería ser capaz de crear por su cuenta un cliente que hablase con mi servidor, ¿Me equivoco?

Solo quería saber si hay alguna manera de evitar esto o si java ya por si solo baraja ésta posibilidad.

Un saludo y gracias de antemano gente  ::)
8  Programación / Java / Migrar de Access a MySQL con Java en: 11 Enero 2014, 11:14 am
Antes de nada cordiales saludos a todos compañeros.

Tengo que hacer una aplicación la cual coja un fichero MDB (Access) y me lo suba a una base de datos en MySQL.

He estado buscando sin éxito alguno algún tipo de API la cual me permita exportar una base de datos en access a mysql, por eso mismo recurro a este gran foro para ver si vosotros sabéis de alguna.

La otra alternativa que se me a ocurrido es clonarlas a palo seco, haciendo una SELECT en una tabla de access, sacar los registros y hacer un INSERT en una tabla en MySQL.

Desde vuestro punto de vista cual es la mejor posibilidad, estoy enteramente abierto a sugerencias.

Un saludo y gracias de antemano.
9  Programación / Java / JTextPane con scroll en: 13 Septiembre 2013, 17:03 pm
Hola buenas, estoy haciendo una gui en la que tengo un JTextPane montado en un JScrollPane, y tengo el problema de que si escribo textos muy largos también se activa el scroll horizontal, me gustaría que únicamente se activase el vertical y que el texto se fuese apilando.

Se que con un JTextArea está el .setLineWrap(true) que lo hace perfectamente pero el JTextPane no lo admite.

Ya e probado lo típico de HORIZONTAL_SCROLLBAR_NEVER pero unicamente la oculta.

Un saludo y como siempre gracias de antemano.
10  Programación / Java / No entiendo planteamiento de un Thread en: 11 Septiembre 2013, 11:02 am
Bien estoy trasteando con sockets, y me tope con uno de los tutoriales de Chuidiang, que haría yo sin su wiki  ;D.

Aqui esta el link:

http://www.chuidiang.com/java/sockets/hilos/socket_hilos.php

Código
  1. HiloDeCliente.java
  2. // Implementa Runnable para poder ser lanzada en un hilo aparte
  3. public class HiloDeCliente implements Runnable
  4. {
  5.   // En el constructor recibe y guarda los parámetros que sean necesarios.
  6.   // En este caso una lista con toda la conversación y el socket que debe
  7.   // atender.
  8.   public HiloDeCliente(DefaultListModel charla, Socket socket)
  9.   {
  10.      ...
  11.   }
  12.  
  13.   public void run ()
  14.   {
  15.      while (true)
  16.      {
  17.         // Código para atender al cliente.
  18.      }
  19.   }
  20. }

Código
  1. ServidorChat.java
  2. public class ServidorChat
  3. {
  4.   // Para guardar toda la conversación.
  5.   private DefaultListModel charla = new DefaultListModel();
  6.  
  7.   public ServidorChat()
  8.   {
  9.      // Se crea el socket servidor
  10.      ServerSocket socketServidor = new ServerSocket(5557);
  11.  
  12.      // Bucle infinito
  13.      while (true)
  14.      {
  15.          // Se espera y acepta un nuevo cliente
  16.          Socket cliente = socketServidor.accept();
  17.  
  18.          // Se instancia una clase para atender al cliente y se lanza en
  19.          // un hilo aparte.
  20.          Runnable nuevoCliente = new HiloDeCliente(charla, cliente);
  21.          Thread hilo = new Thread(nuevoCliente);
  22.          hilo.start();      
  23.      }
  24.   }
  25. }

Mi pregunta esta en el Runnable de el bucle while, porque hace:

Código
  1. Runnable nuevoCliente = new HiloDeCliente(charla, cliente);
  2.          Thread hilo = new Thread(nuevoCliente);

No sería mas directo hacer:

Código
  1. HiloDeCliente nuevoCliente = new HiloDeCliente(charla, cliente);

Y extender la class HiloDeCliente de Thread?

Es decir porque implementa un Runnable y la pone "dentro" de un Thread puediendo lanzar un Thread directamente.

Si alguien puediese explicarmelo lo agradeceria mucho.

Un saludo y gracias de antemano.
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines