[sockets] Servidor Java Cliente Vb.net

NeB1

Hola buenas, tengo un servidor en java y un cliente en java y otro cliente en Vb.net. pues bien, la comunicación java->java me vá perfecta, pero entre Vb.net -> java hace cosas raras y al final no funciona.

Sé bastante poco de sockets, todo son pedazos de programas de un sitio y de otro que he ido sacando, si alguien es un iluminado y me saca de la duda, le querré mucho:

Servidor Java
Cliente Java
Cliente VB.net
erdanblo

mmm, como me suena ese código java de las prácticas de sockets.

¿Mandas/recibes objetos no? Yo creo que el problema es ese.

Prueba trabajando solamente con enteros o strings.

10 meses después
D

Muchachos tengo el mismo problema y no se que hacer ya lo he probado todo, pero me doy cuanta que el socket del lado del servdor que esta en java solo recibe tramas de texto y el de .NET solo envia trabas de bytes, alguna sugerencia?

GamA

Si no es lo que te dijo erdanblo (que podría ser, por lo que te voy a comentar...) prueba con esto:

El tema es que Java tiene normalizados los tipos de datos, por lo que un int es de 32 bits siempre, sea la máquina que sea. Entonces puedes mandar ints de 32 bits y recibir ints de 32 bits.

Yo de VB.net ni pajolera, pero si envias ints de 32 bits puede ser que VB.net los espere de 16 bits y "se lie parda".

Otra cosa que puede pasar es que en la red se trabaja con big endian y los intel por ejemplo trabajan con little endian. Java no tendrá problema al trabajar entre si mismo, pero es posible que no convierta a big endian y VB.net espere los datos en dicho formato, por lo que, por ejemplo, el número 56 sería:

Binario
0011 1000

Little endian
1000
0011

Big endian
0011
1000

Si se envia en Big endian y VB no lo cambia a little porque piensa que viene el little, o se envia en little y cree que viene en big endian lo que pasará es que el 56 se transformará magicamente en 131.

No se exactamente que puede estar fallando, pero si te das cuenta que envias enteros, intenta hacer el cambio de little endian a big o viceversa a ver si es eso, lo cual sería relativamente fácil de arreglar en el código (alteras los bytes al enviar o al recivir, tanto da).

De VB.net se 0, pero de Java, C y C++ estoy harto de trabajar con sockets y muchos de los problemas en C/C++ son esos. Java no tiene problema porque te abstrae de todas estas dificultades, pero claro, al trabajar con dos plataformas distintas pueden darse estos problemas.

Espero haber ayudado :P

Usuarios habituales