CSPromex
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.


Programadores dedicados a C sharp .Net, eres nuevo, experto o quieres aprender a programar en C Sharp, aquí encontraras todo lo que necesitas.
 
ÍndiceBuscarÚltimas imágenesChatRegistrarseConectarse
Conectarse
Nombre de Usuario:
Contraseña:
Entrar automáticamente en cada visita: 
:: Recuperar mi contraseña
Últimos temas
» Sockets Conexion,Envio y recepcion de datos (mini-chat Cliente-Servidor)
Sockets Serializacion (Envio de objetos a traves de sockets) I_icon_minitimeSáb Sep 30, 2023 6:24 pm por EurekaMartin

» Graficos: Grafica circular
Sockets Serializacion (Envio de objetos a traves de sockets) I_icon_minitimeMar Mar 05, 2019 4:58 pm por Luis Garcia

» Calendario hecho Manualmente
Sockets Serializacion (Envio de objetos a traves de sockets) I_icon_minitimeMar Mar 05, 2019 3:52 pm por Luis Garcia

» Activar el protector de pantalla.
Sockets Serializacion (Envio de objetos a traves de sockets) I_icon_minitimeMar Mar 05, 2019 3:12 pm por Luis Garcia

» Hacer backup de MySql desde C#
Sockets Serializacion (Envio de objetos a traves de sockets) I_icon_minitimeMar Abr 18, 2017 10:04 pm por maurifl

» Sockets programa para Ciber Cafe (Cliente-Servidor)
Sockets Serializacion (Envio de objetos a traves de sockets) I_icon_minitimeLun Ago 10, 2015 5:45 pm por artes

» Ayuda crear emoticones en un chat
Sockets Serializacion (Envio de objetos a traves de sockets) I_icon_minitimeDom Jul 12, 2015 9:00 pm por yeco96

» Necesito ayuda para pasar datos a un Datagridview
Sockets Serializacion (Envio de objetos a traves de sockets) I_icon_minitimeDom Jun 07, 2015 4:33 pm por rafaelfa

» Reproductor de música->Lista de reproducción (Guardar-Cargar)
Sockets Serializacion (Envio de objetos a traves de sockets) I_icon_minitimeLun Jun 01, 2015 3:00 pm por kevin22

Buscar
 
 

Resultados por:
 
Rechercher Búsqueda avanzada
Síguenos:
Crear foro Crear foro Crear foro

 

 Sockets Serializacion (Envio de objetos a traves de sockets)

Ir abajo 
4 participantes
AutorMensaje
Luis Garcia
STAFF TEAM
STAFF TEAM
Luis Garcia


Mensajes : 64
Puntos : 112

Sockets Serializacion (Envio de objetos a traves de sockets) Empty
MensajeTema: Sockets Serializacion (Envio de objetos a traves de sockets)   Sockets Serializacion (Envio de objetos a traves de sockets) I_icon_minitimeLun Abr 18, 2011 8:11 pm

Servidor
[Tienes que estar registrado y conectado para ver esa imagen]

Cliente
[Tienes que estar registrado y conectado para ver esa imagen]

Nota: Antes de empezar a leer este tema es necesario leer el tema: [Tienes que estar registrado y conectado para ver este vínculo]

Muy bien como complemento del tema anterior realizarémos un ejemplo para poder enviar objetos a través de una conexion de sockets mediante una tecnica conocida como serializacion.

Primero un vistazo a la Serializacion:
[Tienes que estar registrado y conectado para ver este vínculo]

Luego leer el tema para crear dll's:
[Tienes que estar registrado y conectado para ver este vínculo]

Creamos un proyecto nuevo de tipo biblioteca de clases, el cual será nuestro objeto que enviarémos a través de la conexión de sockets de manera serializada.

En mi caso le puse de nombre a la clase "Objeto_Serial".

En la parte superior de la clase insertamos el atributo siguiente:
Código:

[Serializable] //Solo esto
 public class Objeto_Serial

Mediante este atributo indicamos que este objeto será serializable.

Ahora agregaremos algunas propiedades para nuestro objeto, de esta manera enviaremos datos de una manera eficiente.

Agregamos las siguientes propiedades dentro de la clase:
Código:

  string Cadena { get; set; }
  object Objeto { get; set; }
  int Entero { get; set; }

De esta manera nuestro objeto tendrá la posibilidad de enviar un string, un objeto y un numero entero en sí mismo.

Compilamos con f6 creando la dll.

Ahora abrirémos el proyecto servidor creado en el tema:

[Tienes que estar registrado y conectado para ver este vínculo]

Copiamos la dll que acabamos de crear a la carpeta bin/debug del proyecto servidor.

Agregamos la referencia en proyecto/agregar referencia en la pestaña examinar buscamos la libreria "objeto_serializable.dll" dentro del proyecto.

Agregamos la "using" de la dll:
Código:

using Objeto_Serializable;

Repetimos el proceso para el programa cliente.

Ahora agregaremos dos metodos a nuestra clase "ER" (Enviar Recibir) para enviar y recibir objetos ya que los metodos que tenemos actualmente solo envian cadenas (string) y necesitamos enviar un objecto(object).

Para no confundirnos pongo la clase completa con los "using" necesarios:
Using:
Código:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization;
Código:

  public static void Enviar(TcpClient cliente, String Dato)
        {
            try
            {
                NetworkStream netstream = cliente.GetStream();
                StreamWriter escribir = new StreamWriter(netstream);
                escribir.WriteLine(Dato);
                escribir.Flush();
            }
            catch (Exception) { }
        }

        public static String Recibir(TcpClient cliente)
        {
            try
            {
                NetworkStream netstream = cliente.GetStream();
                StreamReader leer = new StreamReader(netstream);

                return leer.ReadLine();
            }
            catch (Exception) { return ""; }
        }

        public static void Enviar(TcpClient cliente, object Dato)
        {
            NetworkStream netstream = cliente.GetStream();
            BinaryFormatter formatter = new BinaryFormatter();
            try
            {
                formatter.Serialize(netstream, Dato);
                netstream.Flush();
            }
            catch (SerializationException e)
            {
            }
        }

       
        public static Object Recibir_Objeto(TcpClient cliente)
        {
            NetworkStream netstream = cliente.GetStream();
            object obj = null;

            try
            {
                BinaryFormatter formatter = new BinaryFormatter();
                obj = formatter.Deserialize(netstream);

                return obj;
            }
            catch (SerializationException e)
            {
                throw;
            }
        }

Modificamos del proyecto "cliente" la clase "ER" haciendo los cambios necesarios.

Ahora necesitamos algunas modificaciones, en el programa servidor.

Reemplazar el codigo dentro del timmer "Recibir" por:
Código:

if (Cliente.Available>0)//Si hay informacion disponible que leer
                {
                    Objeto_Serial objeto_Recibido=(Objeto_Serial)ER.Recibir_Objeto(Cliente);
                    rtbConversacion.Text += "Cliente: \n Cadena->" + objeto_Recibido.Cadena + "\n" +
                                          "Objeto de tipo-> " + objeto_Recibido.Objeto.GetType() + "\n" +
                                          "Entero-> " + objeto_Recibido.Entero;

Ahora reemplazar el codigo actual del servidor en el boton enviar, por :
Código:

  if (txtMensaje.Text != "")
            {
                Objeto_Serial objeto_A_Enviar = new Objeto_Serial();

                objeto_A_Enviar.Cadena = txtMensaje.Text; //El mensaje del textbox
                objeto_A_Enviar.Entero = 10; //Algun numero a mandar
                objeto_A_Enviar.Objeto = new object();//Algun objeto

                ER.Enviar(Cliente, objeto_A_Enviar);//Enviar objeto
                rtbConversacion.Text += "Servidor: \n Cadena->" + objeto_A_Enviar.Cadena + "\n" +
                                        "Objeto de tipo-> " + objeto_A_Enviar.Objeto.GetType() + "\n" +
                                        "Entero-> " + objeto_A_Enviar.Entero;
                txtMensaje.Text = "";
            }

Ahora realizaremos algunas modificaciones en el programa cliente.

En el evento tick del timmer "Recibir" reemplazamos el código por el siguiente:
Código:

 try
            {
                if (Cliente.Available > 0)//Si hay informacion disponible que leer
                {
                    Objeto_Serial objeto_Recibido = (Objeto_Serial)ER.Recibir_Objeto(Cliente);
                    rtbConversacion.Text += "Servidor: \n Cadena->" + objeto_Recibido.Cadena + "\n" +
                                          "Objeto de tipo-> " + objeto_Recibido.Objeto.GetType() + "\n" +
                                          "Entero-> " + objeto_Recibido.Entero;
                }
            }
            catch (Exception)
            { }

Y en el evento click del boton enviar reemplazamos:
Código:

 if (txtMensaje.Text != "")
            {
                Objeto_Serial objeto_A_Enviar = new Objeto_Serial();

                objeto_A_Enviar.Cadena = txtMensaje.Text; //El mensaje del textbox
                objeto_A_Enviar.Entero = 10; //Algun numero a mandar
                objeto_A_Enviar.Objeto = new object();//Algun objeto

                ER.Enviar(Cliente, objeto_A_Enviar);//Enviar objeto
                rtbConversacion.Text += "Cliente: \n Cadena->" + objeto_A_Enviar.Cadena + "\n" +
                                        "Objeto de tipo-> " + objeto_A_Enviar.Objeto.GetType() + "\n" +
                                        "Entero-> " + objeto_A_Enviar.Entero;
                txtMensaje.Text = "";
            }

Ahora ya tenemos las modificaciones listas si todo esta bien ya podrémos recibir el objeto desde el servidor y viceversa.

Servidor: [Tienes que estar registrado y conectado para ver este vínculo]
Cliente: [Tienes que estar registrado y conectado para ver este vínculo]
Dll Objeto_Serializable: [Tienes que estar registrado y conectado para ver este vínculo]
Volver arriba Ir abajo
lanzcoz
Novato
lanzcoz


Mensajes : 1
Puntos : 4

Sockets Serializacion (Envio de objetos a traves de sockets) Empty
MensajeTema: Re: Sockets Serializacion (Envio de objetos a traves de sockets)   Sockets Serializacion (Envio de objetos a traves de sockets) I_icon_minitimeJue Abr 28, 2011 8:27 pm

Que buen aporte, me salvaste el pellejo, hehe, necesitaba enviar objetos para mi proyecto de videojuego en linea en XNA. y me sirvio mucho. lo malo es que tngo k conertir todas mis clases en librerias XD
Volver arriba Ir abajo
jesusp21
Novato
jesusp21


Mensajes : 2
Puntos : 2

Sockets Serializacion (Envio de objetos a traves de sockets) Empty
MensajeTema: Re: Sockets Serializacion (Envio de objetos a traves de sockets)   Sockets Serializacion (Envio de objetos a traves de sockets) I_icon_minitimeLun Sep 17, 2012 11:36 pm

como lo puedo descargar, me urgee...
Volver arriba Ir abajo
jedeonmelbin
Novato
jedeonmelbin


Mensajes : 1
Puntos : 1

Sockets Serializacion (Envio de objetos a traves de sockets) Empty
MensajeTema: Re: Sockets Serializacion (Envio de objetos a traves de sockets)   Sockets Serializacion (Envio de objetos a traves de sockets) I_icon_minitimeDom Dic 23, 2012 11:30 pm

brother gracias por el aporte pueden subirlo otra ves el codigo gracias saludos
Volver arriba Ir abajo
Contenido patrocinado





Sockets Serializacion (Envio de objetos a traves de sockets) Empty
MensajeTema: Re: Sockets Serializacion (Envio de objetos a traves de sockets)   Sockets Serializacion (Envio de objetos a traves de sockets) I_icon_minitime

Volver arriba Ir abajo
 
Sockets Serializacion (Envio de objetos a traves de sockets)
Volver arriba 
Página 1 de 1.
 Temas similares
-
» Sockets Conexion,Envio y recepcion de datos (mini-chat Cliente-Servidor)
» Sockets Chat Multisocket
» Sockets programa para Ciber Cafe (Cliente-Servidor)
» Envio de señal a un puerto paralelo(serial, usb, etc), encendido de led y envio de señal a motor
» ENVIO de SMS a celular

Permisos de este foro:No puedes responder a temas en este foro.
CSPromex :: PROGRAMACIÓN EN C# :: Código abierto-
Cambiar a: