Encontré un código que me pareció perfecto en esta misma página hace unos días (Socket Visual Basic .Net, conexión mediante socket VB.Net y System.Net.Sockets creado por Alonsojpd en este link http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=579). Lo probé y funciona excelente, pero estoy teniendo un comportamiento "extraño" y no doy con el posible error.
Los pongo en contexto un poco...
En mi trabajo desarrollamos tanto el hardware como el software que necesitamos para nuestros equipos. Uno de esos equipos se conecta vía IP con un servidor nuestro y descarga y sube información.
Necesito hacer la nueva versión de ese software del servidor (la versión anterior y que esta en producción esta hecha en Java y se quiere migrar a .net) y para eso tome prestado el código de aqui, que de buenas a primeras funciona perfecto y hace justo lo que necesito.
El detalle que tengo es con la parte del "Servidor" (en el código de aqui es la parte de ClaseClienteSocket), y es que cuando los datos son muchos no e logrado que el equipo remoto que se conecte pase bien todos los datos. Ese equipo "descarga" lineas de datos (cada linea de aprox 40 bytes) y si por ejemplo le digo que me baje 20 lineas solo e logrado recibir correctamente unos 400 bytes (10 lineas +/-).
Hay alguna parte en el código donde se le este indicando el tamaño máximo de bytes que puede recibir el socket??? (Si es que este es el error obviamente) Lo único que vi que podría ser algo así es el método LeerSocket donde se le da un tamaño al arreglo de bytes y no es allí el problema (he colocado números gigantes de hasta 10.000 y el comportamiento es el mismo).
Ya le e dado vueltas y no e logrado entender como y porque no logro capturar, leer, obtener o como sea todos los datos que llegan por el canal abierto.
Ya descarte que sea el equipo remoto, al probarlo con la versión anterior funciona bien, lo que me dice que en realidad si esta descargando las lineas correctas que se le pidan.
No estoy cerrando antes los sockets ni eliminando ningún hilo ni tumbando nada, lo se porque si obligo a que el código continué aun sin haber recibido todos los datos aun quedan 3 pasos más que ejecuta perfecto durante la misma conexión (son 7 pasos, todos se hacen bien menos el paso 4 que no me llega la data completa).
Al código de aquí le hice muy pocos cambios, solo ponerle condiciones según el tipo de datos que se recibe principalmente para saber cual datos enviar, por lo que funciona 99% igual que como lo escribieron.
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A