Necesito ayuda para pasar un objeto por medio de sockets. Estoy haciendo una aplicación cliente servidor, y necesito enviar un objeto de un lado a otro usando sockets, esto ya lo he hecho en java, pero es mi primera vez usando sockets en c# y como es de esperar, estoy teniendo problemas con eso.
Este es el código del servidor:
Código c#:
Ver originalpublic void enviar()
{
try
{
//Hago la coneccion al socket, todo perfecto hasta aqui
//Creo el objeto para enviar
Persona p = new Persona(12345, "Juan Perez", "22222222");
NetworkStream tream = new NetworkStream(socket);
StreamReader reader = new StreamReader(stream);
StreamWriter writer = new StreamWriter(stream);
BinaryFormatter bf = new BinaryFormatter();
Console.WriteLine("Sending data to server...");
bf.Serialize(stream, p);
//Leo la respuesta del servidor
//Cierro los stream y sockets
}
catch (Exception ex)
{
Console.WriteLine("An error has ocurred while connecting to the server.");
}
}
Y aquí el código del servidor:
Código c#:
Ver originalpublic void recibir()
{
try
{
//Establezco la conexion con el cliente.
while (true)
{
//Acepto la conexion, hasta aqui todo perfecto.
NetworkStream stream = new NetworkStream(socket);
StreamReader reader = new StreamReader(stream);
StreamWriter writer = new StreamWriter(stream);
BinaryFormatter bf = new BinaryFormatter();
Console.WriteLine("Reading client data");
Persona p = (Persona)(bf.Deserialize(stream));
//Envio la respuesta al cliente
//Cierro los stream y sockets
}
}
catch (Exception ex)
{
Console.WriteLine("An error has ocurred while executing the server.");
}
}
El problema es que del lado del sevidor, me genera una excepcion (System.Runtime.Serialization.SerializationExcepti on) cuando intento deserializar el objeto ¨Persona¨.
Cabe mencionar que la clase Persona está marcada como serializable, así que dudo que sea por eso.
Si alguien sabe como resolver esto, agradezco mucho su ayuda.