[Hilo Oficial II] Java

tebilon escribió:Muchas gracias por vuestra ayuda. Como veis estoy muy verde con esto de Java.
¿Podríais indicarme alguna especie de itinerario o de orden en el que se deba aprender el lenguaje de principio a fin? Gracias.
Un saludo.


Pues yo haría lo típico.

Tipos de datos
Clases y objetos
Atributos y métodos (Constructores)
entrada/salida
Colecciones
Hilos de Control
y ya si te interesa swing...

Lo he puesto un poco general.
litos001 escribió:
tebilon escribió:Muchas gracias por vuestra ayuda. Como veis estoy muy verde con esto de Java.
¿Podríais indicarme alguna especie de itinerario o de orden en el que se deba aprender el lenguaje de principio a fin? Gracias.
Un saludo.


Pues yo haría lo típico.

Tipos de datos
Clases y objetos
Atributos y métodos (Constructores)
entrada/salida
Colecciones
Hilos de Control
y ya si te interesa swing...

Lo he puesto un poco general.


Gracias por tu respuesta litos001, veo que es más o menos lo que hay en la mayoría de los libros y manuales que he visto, pero lo que me gustaría saber es después de esto ¿que?

Un saludo.
tebilon escribió:
litos001 escribió:
tebilon escribió:Muchas gracias por vuestra ayuda. Como veis estoy muy verde con esto de Java.
¿Podríais indicarme alguna especie de itinerario o de orden en el que se deba aprender el lenguaje de principio a fin? Gracias.
Un saludo.


Pues yo haría lo típico.

Tipos de datos
Clases y objetos
Atributos y métodos (Constructores)
entrada/salida
Colecciones
Hilos de Control
y ya si te interesa swing...

Lo he puesto un poco general.


Gracias por tu respuesta litos001, veo que es más o menos lo que hay en la mayoría de los libros y manuales que he visto, pero lo que me gustaría saber es después de esto ¿que?

Un saludo.

Practicar, excepciones, librerías gráficas, enfoque a la red...
Yo tuve que utilizar Java en la universidad y me compré un libro de esos de 21 días que para aprender todo el lenguaje en general lo veo bien xD
tebilon escribió:
litos001 escribió:
tebilon escribió:Muchas gracias por vuestra ayuda. Como veis estoy muy verde con esto de Java.
¿Podríais indicarme alguna especie de itinerario o de orden en el que se deba aprender el lenguaje de principio a fin? Gracias.
Un saludo.


Pues yo haría lo típico.

Tipos de datos
Clases y objetos
Atributos y métodos (Constructores)
entrada/salida
Colecciones
Hilos de Control
y ya si te interesa swing...

Lo he puesto un poco general.


Gracias por tu respuesta litos001, veo que es más o menos lo que hay en la mayoría de los libros y manuales que he visto, pero lo que me gustaría saber es después de esto ¿que?

Un saludo.


piensa en algun programa que te gustaria hacer o que necesites e intenta hacerlo
Exacto, practica, practica y más practica, no tiene más...
Hola a todos, a ver si alguien a utilizado esto alguna vez.

Tengo un campo de texto donde quiero comprobar en tiempo real que lo introducido es correcto, por lo que se me ha ocurrido hacer un thread que compruebe todo el rato la información que hay dentro de ese campo.

He conseguido hacerlo pero al "Salir" por ejemplo, de la caja. Lo que no consigo es que se ejecute infinitamente para que este comprobando todo el rato esa caja.

Hay alguna forma de hacer que un thread sea infinito?
elenano2 escribió:Hola a todos, a ver si alguien a utilizado esto alguna vez.

Tengo un campo de texto donde quiero comprobar en tiempo real que lo introducido es correcto, por lo que se me ha ocurrido hacer un thread que compruebe todo el rato la información que hay dentro de ese campo.

He conseguido hacerlo pero al "Salir" por ejemplo, de la caja. Lo que no consigo es que se ejecute infinitamente para que este comprobando todo el rato esa caja.

Hay alguna forma de hacer que un thread sea infinito?


Lo más sencillo sería utilizar Swing y utilizar una función que se ejecute cada vez que se escribe algo. Hacer que un thread se ejecute en un bucle infinito no es una buena idea para nada.
elenano2 escribió:Hola a todos, a ver si alguien a utilizado esto alguna vez.

Tengo un campo de texto donde quiero comprobar en tiempo real que lo introducido es correcto, por lo que se me ha ocurrido hacer un thread que compruebe todo el rato la información que hay dentro de ese campo.

He conseguido hacerlo pero al "Salir" por ejemplo, de la caja. Lo que no consigo es que se ejecute infinitamente para que este comprobando todo el rato esa caja.

Hay alguna forma de hacer que un thread sea infinito?


Como te dicen en swing tiene que haber alguna función tipo onkeypress para capturar lo escrito en tiempo real.
Gracias chicos por responder, pero ya lo puse jeje. Efectivamente, en onKeyListener(no se llamaba asi), pero vamos, que cuando pulsas una tecla en la caja de texto, llama al thread y lo hace perfecto :=).

Muchas gracias
elenano2 escribió:Gracias chicos por responder, pero ya lo puse jeje. Efectivamente, en onKeyListener(no se llamaba asi), pero vamos, que cuando pulsas una tecla en la caja de texto, llama al thread y lo hace perfecto :=).

Muchas gracias


para una tarea tan pequeña como comprobar un campo no se yo si vale la pena lanzar un hilo nuevo
Lazo un hilo por si da la casualidad de que se bloquea. Al ser un hilo tan ligero ni se nota y lo hacer super rapido.

Para mi, es la mejor forma, porque según escribes por detrás se esta comprobando rápidamente todo y no te entras :)
elenano2 escribió:Lazo un hilo por si da la casualidad de que se bloquea. Al ser un hilo tan ligero ni se nota y lo hacer super rapido.

Para mi, es la mejor forma, porque según escribes por detrás se esta comprobando rápidamente todo y no te entras :)


pero lanzas un hilo por comprobacion?
o un solo hilo lanzado al principio? (esta opcion si me parece mas razonable)
A ver, tengo un campo de texto donde compruebo que la empresa no este dada de alta.

Lo que hago, es que cada KeyTyped, lanzo el hilo y compara el nombre introducido(Ya sea mayuscula o miniscula) con los nombres de las empresas registradas.

Y si coincide, pongo el campo en rojo para no dejar agregarlo. En cuanto borro una letra por ejemplo y no coincide con ninguna empresa lo vuelvo a poner en blanco.
elenano2 escribió:A ver, tengo un campo de texto donde compruebo que la empresa no este dada de alta.

Lo que hago, es que cada KeyTyped, lanzo el hilo y compara el nombre introducido(Ya sea mayuscula o miniscula) con los nombres de las empresas registradas.

Y si coincide, pongo el campo en rojo para no dejar agregarlo. En cuanto borro una letra por ejemplo y no coincide con ninguna empresa lo vuelvo a poner en blanco.


Podrías hacerlo de otra forma para no tener que hacer tantas consultas ni crear el hilo tantas veces:


Creas el hilo que ejeute el siguiente código:

cadena empresa = "";
booleano ya_existe;

mientras cierto hacer
    si campo_empresa != empresa hacer
        empresa = campo_empresa;
        ya_existe = consultar("existe?", empresa)
        si ya_existe hacer
            poner campo_empresa de color rojo
        sino hacer
            poner campo_empresa de color blanco
        fin si
        dormir durante 100ms
    fin si
fin mientras


Para el PC 100ms de espera para cada iteración del bucle va a ser una eternidad, así que en la práctica va a estar a 1% de uso de cpu xd

Bueno, no sé hasta que punto esto te puede ir mejor, pero si fuese sobre una base de datos que no es local, sobretodo si es por internet creo que marcaría la diferencia [rtfm]
tom_deluxe escribió:
elenano2 escribió:A ver, tengo un campo de texto donde compruebo que la empresa no este dada de alta.

Lo que hago, es que cada KeyTyped, lanzo el hilo y compara el nombre introducido(Ya sea mayuscula o miniscula) con los nombres de las empresas registradas.

Y si coincide, pongo el campo en rojo para no dejar agregarlo. En cuanto borro una letra por ejemplo y no coincide con ninguna empresa lo vuelvo a poner en blanco.


Podrías hacerlo de otra forma para no tener que hacer tantas consultas ni crear el hilo tantas veces:


Creas el hilo que ejeute el siguiente código:

cadena empresa = "";
booleano ya_existe;

mientras cierto hacer
    si campo_empresa != empresa hacer
        empresa = campo_empresa;
        ya_existe = consultar("existe?", empresa)
        si ya_existe hacer
            poner campo_empresa de color rojo
        sino hacer
            poner campo_empresa de color blanco
        fin si
        dormir durante 100ms
    fin si
fin mientras


Para el PC 100ms de espera para cada iteración del bucle va a ser una eternidad, así que en la práctica va a estar a 1% de uso de cpu xd

Bueno, no sé hasta que punto esto te puede ir mejor, pero si fuese sobre una base de datos que no es local, sobretodo si es por internet creo que marcaría la diferencia [rtfm]


aparte de dormir el hilo tendrias que desechar las peticiones que le fueran llegando, sino se saturaria de todas maneras.

por ejemplo podrias solo llamar al hilo solo cada 10ms (sin necesidad de dormirlo) poniendo algo como:

int modulo = tiempoSistema%tiempoEspera;
IF (modulo <= umbral)
    llamaHilo();
La verdad es que no se me ha saturado y me ha dado problemas pero si pudíera hacer lo del tiempo de llamada estaría bien.

No he hecho nunca lo del tiempo así que mirare a ver si lo encuentro :). Como se calcula el tiempo real?

Gracias
elenano2 escribió:La verdad es que no se me ha saturado y me ha dado problemas pero si pudíera hacer lo del tiempo de llamada estaría bien.

No he hecho nunca lo del tiempo así que mirare a ver si lo encuentro :). Como se calcula el tiempo real?

Gracias


a que te refieres con tiempo real?
si te refieres a la fecha y hora del sistema
System.currentTimeMillis()


con respecto al tiempo de llamada mira mi post anterior, ahi esta.
A vale, simplemente basandose en la fecha del sistema, entonces es facil :)

Muchas gracias por tus consejos!
highfredo escribió:
tom_deluxe escribió:
elenano2 escribió:A ver, tengo un campo de texto donde compruebo que la empresa no este dada de alta.

Lo que hago, es que cada KeyTyped, lanzo el hilo y compara el nombre introducido(Ya sea mayuscula o miniscula) con los nombres de las empresas registradas.

Y si coincide, pongo el campo en rojo para no dejar agregarlo. En cuanto borro una letra por ejemplo y no coincide con ninguna empresa lo vuelvo a poner en blanco.


Podrías hacerlo de otra forma para no tener que hacer tantas consultas ni crear el hilo tantas veces:


Creas el hilo que ejeute el siguiente código:

cadena empresa = "";
booleano ya_existe;

mientras cierto hacer
    si campo_empresa != empresa hacer
        empresa = campo_empresa;
        ya_existe = consultar("existe?", empresa)
        si ya_existe hacer
            poner campo_empresa de color rojo
        sino hacer
            poner campo_empresa de color blanco
        fin si
        dormir durante 100ms
    fin si
fin mientras


Para el PC 100ms de espera para cada iteración del bucle va a ser una eternidad, así que en la práctica va a estar a 1% de uso de cpu xd

Bueno, no sé hasta que punto esto te puede ir mejor, pero si fuese sobre una base de datos que no es local, sobretodo si es por internet creo que marcaría la diferencia [rtfm]


aparte de dormir el hilo tendrias que desechar las peticiones que le fueran llegando, sino se saturaria de todas maneras.

por ejemplo podrias solo llamar al hilo solo cada 10ms (sin necesidad de dormirlo) poniendo algo como:

int modulo = tiempoSistema%tiempoEspera;
IF (modulo <= umbral)
    llamaHilo();


No entiendo a que te refieres con las peticiones. Las "peticiones" ahora no las crea el usuario, sólo se crea 1 cada 100 ms nada más.

Salu2
tom_deluxe escribió:No entiendo a que te refieres con las peticiones. Las "peticiones" ahora no las crea el usuario, sólo se crea 1 cada 100 ms nada más.
Salu2


te pongo en escenario:
- Hilo A envia 10 el texto del cuadro de texto al hilo B
- Hilo B las tiene que procesar todas, si le añades el retardo en el hilo B el resultado es que tarda 10*100ms, cuando lo mejor seria hacer una criba al numero de veces que se le pide al hilo B algo (que en vez de 10, se envien 3)
highfredo escribió:
tom_deluxe escribió:No entiendo a que te refieres con las peticiones. Las "peticiones" ahora no las crea el usuario, sólo se crea 1 cada 100 ms nada más.
Salu2


te pongo en escenario:
- Hilo A envia 10 el texto del cuadro de texto al hilo B
- Hilo B las tiene que procesar todas, si le añades el retardo en el hilo B el resultado es que tarda 10*100ms, cuando lo mejor seria hacer una criba al numero de veces que se le pide al hilo B algo (que en vez de 10, se envien 3)


No sé si me he explicado mal o estoy un poquito lento [+risas]

El hilo que está dando vueltas todo el rato es totalmente independiente. No hay ningún hilo que le envíe nada, es él que va y lee lo que hay en el cuadro de texto, por lo que no se acumula ninguna petición.
tom_deluxe escribió:
highfredo escribió:
tom_deluxe escribió:No entiendo a que te refieres con las peticiones. Las "peticiones" ahora no las crea el usuario, sólo se crea 1 cada 100 ms nada más.
Salu2


te pongo en escenario:
- Hilo A envia 10 el texto del cuadro de texto al hilo B
- Hilo B las tiene que procesar todas, si le añades el retardo en el hilo B el resultado es que tarda 10*100ms, cuando lo mejor seria hacer una criba al numero de veces que se le pide al hilo B algo (que en vez de 10, se envien 3)


No sé si me he explicado mal o estoy un poquito lento [+risas]

El hilo que está dando vueltas todo el rato es totalmente independiente. No hay ningún hilo que le envíe nada, es él que va y lee lo que hay en el cuadro de texto, por lo que no se acumula ninguna petición.


a va, ahora si entiendo tu solucion :P
tom_deluxe escribió:
highfredo escribió:
tom_deluxe escribió:No entiendo a que te refieres con las peticiones. Las "peticiones" ahora no las crea el usuario, sólo se crea 1 cada 100 ms nada más.
Salu2


te pongo en escenario:
- Hilo A envia 10 el texto del cuadro de texto al hilo B
- Hilo B las tiene que procesar todas, si le añades el retardo en el hilo B el resultado es que tarda 10*100ms, cuando lo mejor seria hacer una criba al numero de veces que se le pide al hilo B algo (que en vez de 10, se envien 3)


No sé si me he explicado mal o estoy un poquito lento [+risas]

El hilo que está dando vueltas todo el rato es totalmente independiente. No hay ningún hilo que le envíe nada, es él que va y lee lo que hay en el cuadro de texto, por lo que no se acumula ninguna petición.


como ejercicio para aprender está bien, pero no se te ocurra hacerlo en algo minimamente serio, ya que es matar moscas a cañonazos, para hacer eso ya están los eventos, que en java se implementan mediante interfaces, y consume inmensamente menos que tu solución.
Veréis, en el curro (trabajo de programador web) ha entrado un proyecto que es hacer una aplicación en java. Me ofrecí yo pero hace como 4 meses que no toco java y algo se me ha olvidado pero bueno, todo es mirarselo de nuevo.

Una cosa que no sé si lograré hacer y a ver si sabéis cómo, es, ¿cómo puedo hacer que la aplicación se ajuste a todo tipo de resoluciones y se mantenga más o menos igual en lo que respecta a la posición de botones y demás?

Muchas gracias.
Pues sobre las resoluciones no se si se adaptará solo.

Sobre la posición de los botones y demás, si usas disposiciones automáticas (layouts) se debería mantener más o menos el aspecto. Si usas disposiciones manuales es posible que tengas problemas, aunque depende de como lo programes.
Compañeros, a ver si me podeis ayudar con esta duda, es una tontería pero no lo encuentro :S


Desde mi jframe principal llamo a varios Jdialog para mostrar otras ventanas. Cuando llamo a esos jdialog quiero desactivar el jframe principal para que no puedan seguir lanzando nuevas ventanas hasta que salgan de este jdialog. He visto varios ejemplos pero no me sirve ninguno y he leido por ahi que hay una opción cuando lanzas un jdialog para hacer esto automaticamente.

A ver si alguien sabe esta cosilla...

Muchas gracias
No sé si es esto a lo que te refieres, pero al crear un JDialog puedes especificarle al constructor que quieres que sea modal (esto es, que el foco del programa está en ese cuadro de diálogo y si tratas de hacer click en otro sitio que no sea ese diálogo te lo deniega)
Justo es eso a lo que me refiero, como sería para hacerlo modal?

Gracias
http://docs.oracle.com/javase/1.4.2/doc ... ialog.html

Llevo mucho tiempo sin tocar Swing, no recuerdo ahora mismo a qué se refiere a eso de owner, pero fíjate que hay constructores que les pasas una booleana, si esa booleana es true, será modal.
Muchas gracias, ya lo consegui :). En cuanto me has dicho lo de modal ijjjj

Graciaaaaaaaas :)
Nada hombre, para eso estamos :)

(Si te digo la verdad, yo me enteré de esto de un diálogo modal porque me lo comentó el profesor de rebote... xD)
Pues entonces tambien gracias a tu profesorxD...es una cosa que tenia en mente y no me había dado tiempo a mirar. Eso si, que facil es asixD

Grache mon amigo!XD
Hola amigos eolianos, yo tengo otra duda, estoy comenzando a tratar con POO y bueno, mi maestro ha sido un maldito que me ha pedido un proyecto final bastante laborioso y a mi punto de vista imposible.
Se trata de imitar el siguiente videojueg:


http://www.youtube.com/watch?v=huS9ZpaLMvQ

El vídeo de fondo pues es cosa sencilla según he leido con javaFX si no mal recuerdo o sus similares, mi duda es como diablos haré lo demás, lo único que me dijo mi maestro es que lea sobre threads, y pues si les veo utilidad pero no resuelven todo el programa, pueden apuntarme en que dirección buscar?

Saludos!
josealejandro escribió:Hola amigos eolianos, yo tengo otra duda, estoy comenzando a tratar con POO y bueno, mi maestro ha sido un maldito que me ha pedido un proyecto final bastante laborioso y a mi punto de vista imposible.
Se trata de imitar el siguiente videojueg:


http://www.youtube.com/watch?v=huS9ZpaLMvQ

El vídeo de fondo pues es cosa sencilla según he leido con javaFX si no mal recuerdo o sus similares, mi duda es como diablos haré lo demás, lo único que me dijo mi maestro es que lea sobre threads, y pues si les veo utilidad pero no resuelven todo el programa, pueden apuntarme en que dirección buscar?

Saludos!


acabas de empezar y te han mandado eso?? joder con tu profesor...

vale, para empezar sera mejor que te fijes mas en un guitar hero, ya que al ir las accines en un rail fijo es menos complejo.

a partir de hay mirate sprites, hilos, eventos de teclado, reproduccion de sonido, java swing y javafx tambien te podria ser util pero no tienes porque usarlo (aunque en este campo no te puedo ayudar)
highfredo escribió:
josealejandro escribió:Hola amigos eolianos, yo tengo otra duda, estoy comenzando a tratar con POO y bueno, mi maestro ha sido un maldito que me ha pedido un proyecto final bastante laborioso y a mi punto de vista imposible.
Se trata de imitar el siguiente videojueg:


http://www.youtube.com/watch?v=huS9ZpaLMvQ

El vídeo de fondo pues es cosa sencilla según he leido con javaFX si no mal recuerdo o sus similares, mi duda es como diablos haré lo demás, lo único que me dijo mi maestro es que lea sobre threads, y pues si les veo utilidad pero no resuelven todo el programa, pueden apuntarme en que dirección buscar?

Saludos!


acabas de empezar y te han mandado eso?? joder con tu profesor...

vale, para empezar sera mejor que te fijes mas en un guitar hero, ya que al ir las accines en un rail fijo es menos complejo.

a partir de hay mirate sprites, hilos, eventos de teclado, reproduccion de sonido, java swing y javafx tambien te podria ser util pero no tienes porque usarlo (aunque en este campo no te puedo ayudar)



Y me va a evaluar con la certificacion de java xD

Pero entonces ya mismo comienzo a leer sobre lo que mencionas, también intenté hablar con el sobre el guitar hero, pero nada. Quiere que trabaje con el movimiento oscilante de los botones y que no sea algo recto. Q_Q
josealejandro escribió:
highfredo escribió:
josealejandro escribió:Hola amigos eolianos, yo tengo otra duda, estoy comenzando a tratar con POO y bueno, mi maestro ha sido un maldito que me ha pedido un proyecto final bastante laborioso y a mi punto de vista imposible.
Se trata de imitar el siguiente videojueg:


http://www.youtube.com/watch?v=huS9ZpaLMvQ

El vídeo de fondo pues es cosa sencilla según he leido con javaFX si no mal recuerdo o sus similares, mi duda es como diablos haré lo demás, lo único que me dijo mi maestro es que lea sobre threads, y pues si les veo utilidad pero no resuelven todo el programa, pueden apuntarme en que dirección buscar?

Saludos!


acabas de empezar y te han mandado eso?? joder con tu profesor...

vale, para empezar sera mejor que te fijes mas en un guitar hero, ya que al ir las accines en un rail fijo es menos complejo.

a partir de hay mirate sprites, hilos, eventos de teclado, reproduccion de sonido, java swing y javafx tambien te podria ser util pero no tienes porque usarlo (aunque en este campo no te puedo ayudar)



Y me va a evaluar con la certificacion de java xD

Pero entonces ya mismo comienzo a leer sobre lo que mencionas, también intenté hablar con el sobre el guitar hero, pero nada. Quiere que trabaje con el movimiento oscilante de los botones y que no sea algo recto. Q_Q


math powa!!!!

pues entonces tambien tendras que hecharle un ojo al algebra y a la fisica.

mira esto
http://es.wikipedia.org/wiki/Curva_de_B%C3%A9zier
highfredo escribió:
math powa!!!!

pues entonces tambien tendras que hecharle un ojo al algebra y a la fisica.

mira esto
http://es.wikipedia.org/wiki/Curva_de_B%C3%A9zier



Va a estar bien interesante el asunto xD ya mismo voy estudiando todo ese tipo de movimiento, estoy leyendo sobre threads ahora mismo, ya que sepa interpretar el tema pasaré a estudiar sobre event handling. Va a ser un duro mes... (tengo 2 meses para hacerlo)

--Edit--
Ahorita mismo me puse a buscar sobre esas curvas de Bezier pero, no logro encontrar como eso es aplicable a java, encontré como hacerlo en Blender, pero nada sobre java. Es esto posible?
josealejandro escribió:
highfredo escribió:
math powa!!!!

pues entonces tambien tendras que hecharle un ojo al algebra y a la fisica.

mira esto
http://es.wikipedia.org/wiki/Curva_de_B%C3%A9zier



Va a estar bien interesante el asunto xD ya mismo voy estudiando todo ese tipo de movimiento, estoy leyendo sobre threads ahora mismo, ya que sepa interpretar el tema pasaré a estudiar sobre event handling. Va a ser un duro mes... (tengo 2 meses para hacerlo)

--Edit--
Ahorita mismo me puse a buscar sobre esas curvas de Bezier pero, no logro encontrar como eso es aplicable a java, encontré como hacerlo en Blender, pero nada sobre java. Es esto posible?


primer resultado al buscar "curva bezier java" en google
http://jc-mouse.blogspot.com.es/2010/08 ... ezier.html
Alguien me puede explicar que hace el operando que está subrayado? He intentado googlear, pero esos símbolos Google se los pasa por el forro a la hora de buscar.

int i =256;
i >>>= 1;
langos1989 escribió:Alguien me puede explicar que hace el operando que está subrayado? He intentado googlear, pero esos símbolos Google se los pasa por el forro a la hora de buscar.

int i =256;
i >>>= 1;


Es el operador de desplazamiento a derecha sin signo, "unsigned right shift".

http://es.wikibooks.org/wiki/Programaci ... azamientos
amuchamu escribió:
langos1989 escribió:Alguien me puede explicar que hace el operando que está subrayado? He intentado googlear, pero esos símbolos Google se los pasa por el forro a la hora de buscar.

int i =256;
i >>>= 1;


Es el operador de desplazamiento a derecha sin signo, "unsigned right shift".

http://es.wikibooks.org/wiki/Programaci ... azamientos

Gracias por el link! Tanto tiempo programando y no había visto esto en mi vida. Voy a ver si me lo empapo un poco ;)
Buenas compañeros, a ver si habéis topado alguna vez con este problema.

Estoy creando una conexión tcp a un programa que me envia tramas, hasta aqui bien y sin ningún problema.

Luego tengo que ir leyendo la trama separandola por bytes, el problema esta, que el programa servidor esta hecho en C y C++.

Entonces el usa para guardar los datos WORD y DWORD y luego los envia. El DWORD esta compuesto por 32 bits(4bytes) y en java no se como poder guardar esos bytes para luego interpretarlos...

No se si me he explicado bien, es que llevo varias horas haciendo pruebas y no consigo obtener el valor bien.. :S

Gracias de antemano
elenano2 escribió:Buenas compañeros, a ver si habéis topado alguna vez con este problema.

Estoy creando una conexión tcp a un programa que me envia tramas, hasta aqui bien y sin ningún problema.

Luego tengo que ir leyendo la trama separandola por bytes, el problema esta, que el programa servidor esta hecho en C y C++.

Entonces el usa para guardar los datos WORD y DWORD y luego los envia. El DWORD esta compuesto por 32 bits(4bytes) y en java no se como poder guardar esos bytes para luego interpretarlos...

No se si me he explicado bien, es que llevo varias horas haciendo pruebas y no consigo obtener el valor bien.. :S

Gracias de antemano


puedes usar:
- un array de chars de tamaño 2.
- un array de bytes de tamaño 4.
- un int
Gracias por responder

Mira, ahora mismo lo tengo asi:

int len = in.readInt();
byte[] data = new byte[len];

Es decir, guardo los 4byte(32bits) en el array correctamente y ahora para poder pasarlo a caracteres legibles lo pongo directamente en String?
elenano2 escribió:Gracias por responder

Mira, ahora mismo lo tengo asi:

int len = in.readInt();
byte[] data = new byte[len];

Es decir, guardo los 4byte(32bits) en el array correctamente y ahora para poder pasarlo a caracteres legibles lo pongo directamente en String?


sip
Tengo una clase que hereda de Thread y la llamo en la clase main,y lo que yo quiero es que las dos instancias de la clase Hilo que hay en main modifiquen la misma variable,que es la variable n de main,pero creo que tal como lo hago cada objeto Hilo esta modificando su propia variable n, y no se como hacerlo,a ver si alguien me puede orientar ;)
public class Hilo
  extends Thread
{
    private int tipoHilo;
    private static int n;
    private int nVueltas;

    public Hilo(int nVueltas, int tipoHilo,int n)
    {
        this.nVueltas=nVueltas; this.tipoHilo=tipoHilo;
        this.n=n;
    }

    public void run()
    {
      switch(tipoHilo){
        case 0: for(int i=0; i<nVueltas; i++)n++; break;
        case 1:    for(int i=0; i<nVueltas; i++)n--; break;
      }

    }


public class Main {

    private static int n=0;//esta es sobre la que se deben hacer todos las operaciones de incremento y decremento
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws Exception {
     
          Hilo p = new Hilo(100, 0,n);
          Hilo q = new Hilo(100, 1,n);
          p.start();
          q.start();
          p.join();
          q.join();
          System.out.println(n);
    }
}
No estoy muy seguro porque no es algo que acostumbre a hacer, pero creo que si haces que esa variable sea static será común a todos los que la usen...

Yo ahora tengo otra pregunta... ¿Hay alguna forma de "rebobinar" un fichero? Me refiero a algo equivalente al rewind de C
zaius5 escribió:Tengo una clase que hereda de Thread y la llamo en la clase main,y lo que yo quiero es que las dos instancias de la clase Hilo que hay en main modifiquen la misma variable,que es la variable n de main,pero creo que tal como lo hago cada objeto Hilo esta modificando su propia variable n, y no se como hacerlo,a ver si alguien me puede orientar ;)
public class Hilo
  extends Thread
{
    private int tipoHilo;
    private static int n;
    private int nVueltas;

    public Hilo(int nVueltas, int tipoHilo,int n)
    {
        this.nVueltas=nVueltas; this.tipoHilo=tipoHilo;
        this.n=n;
    }

    public void run()
    {
      switch(tipoHilo){
        case 0: for(int i=0; i<nVueltas; i++)n++; break;
        case 1:    for(int i=0; i<nVueltas; i++)n--; break;
      }

    }


public class Main {

    private static int n=0;//esta es sobre la que se deben hacer todos las operaciones de incremento y decremento
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws Exception {
     
          Hilo p = new Hilo(100, 0,n);
          Hilo q = new Hilo(100, 1,n);
          p.start();
          q.start();
          p.join();
          q.join();
          System.out.println(n);
    }
}


Si no me equivoco, el problema que tienes es que "int n" no es un objeto, es una primitiva de tipo int, por lo que en realidad estás pasando el valor de n y no el (supuesto) objeto n, por ello estás modificando el n de cada hilo y no el del main. Hay una clase, llamada Integer, que te servirá para ello.

http://docs.oracle.com/javase/1.4.2/doc ... teger.html
Toc toc, se puede?
Soy una total noob en programación, y para empezar desde 0 me han metido JAVA [+risas] así que, como la mayoría del tiempo no me empano de absolutamente nada y tengo que investigar por mi cuenta, daré el coñazo un poco por aqui.
La cosa esque tengo un código y no sé que quieren decir los operadores subrayados, alguien tan amable de explicarme para qué sirven de una forma que pueda enteder una novata total? [angelito]

num1=teclado.nextInt();
      for (f=0;num1>0;num1/=10,[u]f*=[/u]10)
          [u]f+=[/u]num1%10;
      System.out.println(f/10);
769 respuestas
112, 13, 14, 15, 16