Foros del Web » Programación para mayores de 30 ;) » .NET »

Problema para leer un objeto serializado!

Estas en el tema de Problema para leer un objeto serializado! en el foro de .NET en Foros del Web. Hola, estoy haciendo una prueba sencilla para ver si puedo mandar un objeto serializado a través de un socket. Esto es lo que hago: Private ...
  #1 (permalink)  
Antiguo 29/11/2005, 19:13
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
Problema para leer un objeto serializado!

Hola, estoy haciendo una prueba sencilla para ver si puedo mandar un objeto serializado a través de un socket. Esto es lo que hago:

PrivateFunction GetSerializedBytes(ByVal E As EventSender) AsByte()

Dim Formatter AsNew BinaryFormatter()

Dim S AsNew MemoryStream()

Formatter.Serialize(S, E)

Dim BinaryReader AsNew BinaryReader(S)

Return BinaryReader.ReadBytes(S.Length)

EndFunction


La cuestión es que la longitud de la matriz de bytes que me devuelve esta función siempre es 0, es decir, como que no leyera ningún byte. En donde puede estar el error?
__________________
Add, never Remove
  #2 (permalink)  
Antiguo 29/11/2005, 20:51
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
Modifique un poco el código, ahora me devuelve una matriz de bytes con longitud mayor que cero, es decir, que me lee correctamente los bytes, pero en el servidor, cuando se ejecuta este método, y más precisamente la linea marcada en rojo, me salta este error:

Información adicional: La secuencia Binary no contiene ningún BinaryHeader válido, 0 causas posibles, secuencia no válida o cambio de versión de objeto entre la serialización y la deserialización.


PrivateFunction DeserializeBytes(ByVal B() AsByte) As Message

Dim M AsNew MemoryStream(B)

Dim Formatter AsNew BinaryFormatter()

ReturnCType(Formatter.Deserialize(M), Message)

EndFunction


El parametro B() es la matriz de bytes que fue enviada por el cliente al servidor, es decir, el objeto serializado.

Espero que alguien pueda darme una mano con esto.

Saludos a todos!.
__________________
Add, never Remove
  #3 (permalink)  
Antiguo 01/12/2005, 14:47
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
No se si a alguien le interese esto, pero finalmente pude resolver mi inconveniente. El problema era que tenía dos clases llamadas de la misma forma en cada aplicación, lo cual me generaba error. Entonces, lo que hice fue en lugar de tener la clase en cada aplicación, generar una dll y referenciarla desde las aplicaciones, y así si funciono. Vuelvo a repetir, no se si a alguien le interese, pero esta son las funciones que utilizo para hacerlo:

PrivateFunction GetSerializedBytes(ByVal E As Message) AsByte()

'Esta función devuelve la matriz de bytes del objecto serializado para poder ser enviado mediante el socket

Dim Formatter AsNew BinaryFormatter()

Dim S AsNew MemoryStream()

Formatter.Serialize(S, E)

Return S.GetBuffer()

EndFunction


PrivateFunction DeserializeBytes(ByVal B() AsByte) As EventSender

'Esta funcion es la que me permite deserializar el objeto

Dim Formatter AsNew BinaryFormatter()

Dim M AsNew MemoryStream(B)

ReturnCType(Formatter.Deserialize(M), EventSender)

EndFunction

Espero que le sea de utilidad a alguien ya que en este foro realmente me han ayudado un monton.
Saludos a todos!.
__________________
Add, never Remove
  #4 (permalink)  
Antiguo 01/12/2005, 19:23
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
Me parece bien que tu mismo te respondas y contribuyas al foro, así aprendes más.

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:12.