Enviar datos por Stream ( Entre Cliente Servidor ) por separado

EDN Admin

Well-known member
Joined
Aug 7, 2010
Messages
12,794
Location
In the Machine
Hola a todos! =), estoy con un problema al cual no encuentro solución aún, aún que sigo googleando, espero que alguien conozca alguna solución para esto, mi problema es el siguiente:
Estoy desarrollando una aplicación Cliente/Servidor, y tengo problemas con el dialogo entre estos, cuando el cliente le envía varios mensajes al servidor, algunos me los separa y otros si son pequeños me los une, y no comprendo aun porque. Este es el código
que usa el programa cliente para enviar un mensaje o dato:
<pre class="prettyprint lang-vb Public Sub EnviarDatos(ByVal Datos As String)
Dim BufferDeEscritura() As Byte
Convierto String a Byte
BufferDeEscritura = Encoding.ASCII.GetBytes(Datos)
Envio los datos al Servidor
Stm.Write(BufferDeEscritura, 0, BufferDeEscritura.Length)
End Sub[/code]
<br/>
Les pongo un ejemplo: Quiero enviar estos mensajes:
-{Iniciado de Envio de Informacion del Cliente}
-Información del Sistema Operativo
-Información del Procesador
-Nombre del Usuario
-{Finalizacion del Envio de Informacion del Cliente}
Siendo el primero y el ultimo Claves o Llaves para identificar cuando comienza y finaliza la transferencia de información del Usuario que quiero enviar, y el nombre de usuario siendo de pocos caracteres; el Servidor recibe la información así
-
{Iniciado de Envio de Informacion del Cliente}
-Información del Sistema Operativo
-Información del Procesador
-Nombre del Usuario {Finalizacion del Envio de Informacion del Cliente}
lo mismo me pasa cuando intento enviar una imagen, aunque para este caso, uso el procedimiento que mencione antes y este:
<pre class="prettyprint lang-vb Public Sub EnviarImagen(ByVal img As Bitmap)
Dim BufferDeEscritura() As Byte
Dim imgStream As MemoryStream = New MemoryStream()

img.Save(imgStream, System.Drawing.Imaging.ImageFormat.Png)
imgStream.Close()
Dim byteArray As Byte() = imgStream.ToArray()
imgStream.Dispose()
BufferDeEscritura = byteArray
If Not (Stm Is Nothing) Then
Envio los datos al Servidor
Stm.Write(BufferDeEscritura, 0, BufferDeEscritura.Length)
End If
End Sub[/code]
<br/>
por Ejemplo:
-"img:#|" ( Envío mediante método EnviarDatos )
-Bytes de la Imagen ( Envío mediante método EnviarImagen )
-"|#" ( Envío mediante método EnviarDatos )
Siendo el primero y el ultimo Claves o Llaves para identificar cuando comienza y finaliza la transferencia de la imagen y el Servidor recibe esto:
-"img:#|"
-Bytes de la Imagen "|#"
Esto me ha pasado algunas veces nomas, el cuál no entiendo porque ocurre, ya que debería enviarlo por separado, o eso creo, no tengo mucha experiencia sobre Sockets y Streams, pero basándome en la mayoría de los resultados que obtuve debería enviar
los datos separados.
Cuál es el problema? me faltaría algo en el código? o no trabaja así el stream?
Desde ya muchas gracias a todos!
PD: Para el desarrollo de mi programa Cliente/Servidor me he basado en esta pagina: http://www.elguille.info/colabora/puntoNET/PabloTilli_SocketsVBNET.htm
Saludos Atte.


View the full article
 
Back
Top