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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Mensajes
Páginas: [1]
1  Programación / Java / Re: Ayuda Con error en programa en: 30 Agosto 2012, 03:37 am
Lo que pasa es que necesitas sobrescribir el metodo toString() o llamar al metodo  tiraDado()
System.out.println(dados.get(i).tiraDado());
2  Programación / Java / Re: extraño bug de java en: 29 Agosto 2012, 01:35 am
Dudo mucho que sea bug de Java, es mejor que compiles tu programa desde linea de comandos, y lo pruebes!, y como recomendación, si modificas el programa constantemente, es mejor crear un archivo bash que ejecute el programa y copiarlo a la carpeta "/home/user/bin/", por ejemplo este
Código
  1. #! /bin/bash
  2. java -jar ~/.jdownloader/JDownloader.jar
  3.  
o si está dentro de tu carpeta de proyectos(no se cual es) mas o menos asi:
Código
  1. #! /bin/bash
  2. java -cp [ruta a tu carpeta de binarios] [paquete de la clase donde se encuentra el main]
  3.  

3  Programación / Java / Re: Ayuda con Sockets en java en: 28 Agosto 2012, 03:35 am
La variable "dis" debe ser obtenida de manera análoga a la variable "dos", y después hacer el readUTF(), ademas si es null el resultado de esta llamada debes hacer antes una comparacion
String answer = dis.readUTF();
 if (answer == null || !answer.equals("hi")) { ...
4  Programación / Java / Re: Error cifrado ROOT13 en: 28 Agosto 2012, 03:24 am

Código
  1. ]import java.util.Scanner;
  2.  
  3. public class Prueba {
  4.  
  5. public static void main(String[] args) {
  6.  
  7. char[] abecedario={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','ñ','o','p','q','r','s','t','u','v','w','x','y','z'};
  8. System.out.println("Introduce el numero de caracteres a cifrar en ROOT13");
  9. Scanner scann = new Scanner (System.in);
  10. int maximo = scann.nextInt();
  11. char letra[];
  12. letra = new char[maximo];
  13.  
  14. for (int k=0; k<maximo; k++) {
  15.  
  16. letra[k] = scann.next().charAt(0);
  17.  
  18. }
  19.  
  20. for (int i=0; i<maximo; i++) {
  21.  
  22. for (int j=0; j<27; j++) {
  23.  
  24. if (letra[i] == abecedario[j]) {
  25. int x = j + 13;
  26.    if (x>=27) {
  27.     x = x - 27;
  28.    letra[i]=abecedario[x]; }
  29.  
  30.    else {
  31.  
  32.    letra[i]=abecedario[x];
  33. }
  34. break;
  35.                }
  36. }
  37. }
  38.  
  39. for (int g=0; g<maximo; g++){
  40. System.out.println(letra[g]);
  41. }
  42. }
  43.  
  44. }
  45.  
5  Programación / Java / Re: [Ayuda] Operador ternario en: 13 Julio 2012, 15:06 pm
Código
  1. class Empezo{
  2. public static void main(String[]args){
  3. int numero1 =-1;
  4. String mensaje;
  5. mensaje = (numero1==0)? "El numero Introduccido es 0":(numero1<0) ? "El número Introduccido es Negativo":"El número Introduccido es positivo";
  6.  
  7. System.out.println(mensaje);
  8. }
  9. }
6  Programación / Java / [Base64 encoder/decoder] en: 13 Julio 2012, 05:55 am
Un pequeno codigo que hice para codificar unas urls que me hacian falta
Código
  1. /*
  2. Copyright (c) <2012> <xmbeat::Juan Hebert Chable Covarrubias>
  3.  
  4. Permission is hereby granted, free of charge, to any
  5. person obtaining a copy of this software and associated
  6. documentation files (the "Software"), to deal in the
  7. Software without restriction, including without limitation
  8. the rights to use, copy, modify, merge, publish,
  9. distribute, sublicense, and/or sell copies of the
  10. Software, and to permit persons to whom the Software is
  11. furnished to do so, subject to the following conditions:
  12.  
  13. The above copyright notice and this permission notice
  14. shall be included in all copies or substantial portions of
  15. the Software.
  16.  
  17. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
  18. KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  19. WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
  20. PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
  21. OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
  22. OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  23. OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  24. SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  25.  */
  26. public class Base64 {
  27. private static String TABLE_64;
  28. private static byte INDEX_TABLE[] = new byte[256];
  29. private char _padChar = '=';
  30. static
  31. {
  32. TABLE_64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  33. for (int i = 0; i < 64; i++)
  34. {
  35. INDEX_TABLE[TABLE_64.charAt(i)] = (byte)i;
  36. }
  37. }
  38. public Base64(){}
  39. public Base64(char padChar)
  40. {
  41. _padChar = padChar;
  42. }
  43. public String encode(byte[] data)
  44. {
  45. int finalLen = data.length / 3 * 4;
  46. if (data.length % 3 > 0)finalLen+=4;
  47. StringBuffer string64 = new StringBuffer();
  48. string64.setLength(finalLen);
  49. int leftBits = 0;
  50. int rightBits = 0;
  51. int shift = 2;
  52. int index = 0;
  53. for (int i = 0; i < data.length; i++)
  54. {
  55. int curByte = data[i] & 0xFF;
  56. leftBits = (rightBits | (curByte >> shift));
  57. string64.setCharAt(index++, TABLE_64.charAt(leftBits));
  58. rightBits = (curByte << (6-shift)) & 0x3F;
  59. if (shift == 6 || i == data.length - 1)
  60. {
  61. string64.setCharAt(index++,TABLE_64.charAt(rightBits));
  62. rightBits = 0;
  63. shift = 2;
  64. }
  65. else
  66. shift+=2;
  67. }
  68. for (;index < finalLen; index++)
  69. {
  70. string64.setCharAt(index, _padChar);
  71. }
  72. return string64.toString();
  73. }
  74. public byte[] decode(String data)
  75. {
  76. int realLen  = data.length() - 1;
  77. while(data.charAt(realLen)==_padChar) realLen--;
  78. realLen++;
  79. byte []result =  new byte[realLen*3/4];
  80. int rightBits = 0;
  81. int leftBits = 0;
  82. int shift = 2;
  83. int index = 0;
  84. boolean procesado = false;
  85. for (int i = 0; i < realLen; i++)
  86. {
  87. int curByte = INDEX_TABLE[data.charAt(i)] & 0xFF;
  88. //Incluí todos los caractares a una tabla, para asi ganar un poco de velocidad
  89. //Pero a consecuencia de que si un byte no esta en la tabla lo trata como la letra
  90. //'A', si quieren pongan un condicional para generar una excepcion
  91. rightBits = curByte >> (8-shift);
  92. if (procesado)
  93. {
  94. result[index++]=(byte)(rightBits | leftBits);
  95. }
  96. leftBits = (curByte << shift) & 0xFF;
  97. if (shift == 8)
  98. {
  99. procesado = false;
  100. shift = 2;
  101. }
  102. else
  103. {
  104. procesado = true;
  105. shift += 2;
  106. }
  107. }
  108. return result;
  109. }
  110. public static void main(String[] args)
  111. {
  112. Base64 converter = new Base64();
  113. String strEncode = converter.encode("A la ***** la universidad, yo quiero ser actor porno".getBytes());
  114. System.out.println(strEncode);
  115. System.out.println(new String(converter.decode(strEncode)));
  116. }
  117. }
  118.  
  119.  
7  Programación / Java / OutputStream, write() no envia los datos en: 28 Junio 2012, 04:36 am
He estado haciendo un pequeño protocolo de comunicación para una aplicación que tengo planeada, básicamente el protocolo consiste en que el cliente hace una petición conformada por atributos(Nombre y Valor) separados por un "\n", cuando la petición es terminada, se le agrega otro "\n", y el servidor responde de manera análoga, ejemplo:
El cliente haría esta petición:
GET /home/xmbeat/archivo.txt
BYTE-POS 10
__________________________
El servidor respondería así:
XmServer/1.0 GOOD
CONTENT-LENGTH 400
FILE-LENGTH 410
__________________________
[DATOS BINARIOS DE LONGITUD 400]
Como aprecian es parecido al protocolo http, pero no logro hacerlo funcionar, el programa funciona de esta manera: el servidor se pone a la escucha y por cada cliente que se conecte, crea un hilo que atienda sus peticiones hasta que el cliente decida desconectarse (esto es así para cada hilo), todo marcha bien pero en mi caso, siempre llegan los meta-datos, pero no siempre los datos binarios. En ocasiones hace lo que le digo, pero otras veces se queda esperando el paquete que nunca llega, aun cuando hago flush(), close(), pero nada!

Así que, supuse que el método write() debería estar fallando,  por ejemplo, usando C, el método write() me indicaba cuantos datos se pudieron enviar, pero desafortunadamente en Java este método es void, así que no se si se enviaron o no. Esta es la parte del código que creo que falla:
Código
  1. public void sendData(OutputStream salida) throws IOException
  2. {
  3. if (isReady())
  4. {
  5. byte buffer[] = new byte[SIZE_BUFFER];
  6. int sizeChunk = 0;
  7. if (_source instanceof File)
  8. {
  9. File file = (File)_source;
  10. FileInputStream entrada = new FileInputStream(file);
  11. while((sizeChunk = entrada.read(buffer))>0)
  12. {
  13. salida.write(buffer, 0, sizeChunk); //he intentado con flush(), pero no!
  14. }
  15. }
  16. else if (_source instanceof byte[])
  17. {
  18. byte src[] = (byte[])_source;
  19. int max  = src.length / SIZE_BUFFER;
  20. int rest = src.length % SIZE_BUFFER;
  21. int i = 0;
  22. while (i < max)
  23. {
  24. salida.write(src, i*SIZE_BUFFER, SIZE_BUFFER);
  25. i++;
  26. }
  27. if (rest > 0)
  28. {
  29. salida.write(src, i*SIZE_BUFFER, rest);
  30. }
  31. }
  32. salida.flush();//Aseguramos que se envien, segun...
  33. }
  34. }
  35.  
  36.  

Adjunto el proyectohttps://dl.dropbox.com/u/81497136/src.zip
para compilarlo, ubicarse en la carpeta "src/" y desde el prompt ejecutar:
javac -d ../bin/ com/xmserver/componentes/*.java
javac -d ../bin/ com/xmserver/gui/*.java
Para ejecutar el server:
java -cp ../bin/ com.xmserver.gui.Main
Para ejecutar el cliente en otra shell usar:
java -cp ../bin/ com.xmserver.componentes.XmClientSession
ó
java -cp ../bin/ com.xmserver.componentes.XmClientSession; md5sum Song.mp3 Song2.mp3

Comentarios:
-Desbloquear el puerto 10500, o cambiarlo a gusto
-A mi en lo personal, el cliente funciona solo 2 veces, al 3er intento, se queda esperando un paquete que nunca es enviado, no sé porque, a pesar de que es un hilo aparte.
Ojalá hayan leído mi problema y puedan ayudarme, gracias!
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines