![]() |
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? |
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!. |
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!. |
Me parece bien que tu mismo te respondas y contribuyas al foro, así aprendes más. Saludos |
| La zona horaria es GMT -6. Ahora son las 05:06. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.