Los foros del Guille

Si no encuentras respuesta, puedes buscar en el sitio del Guille

Google
 

elGuille.hosting: Ofertas de alojamiento
posiblemente los mejores precios
¡¡¡ Ahora con el doble de casi todo !!!

Selecciona el foro y pulsa en mostrar:     Mostrar 
De tu interés (algunos de los avisos publicados)

08/dic/2005
Si haces una pregunta y te responden correctamente, por favor, márcala como respuesta válida (pulsa en la interrogación de la respuesta que responda tu duda), de esa forma ayudarás a otros que tengan esa misma duda. Gracias.

  Foro: .NET.C# Cantidad:  Desde:   Hasta:    Aplicar   Responder 
Respuestas a: 57033 - perdida de Informacion con NetworkStream
IDAsuntoFechaNick 
57033 perdida de Informacion con NetworkStream15/04/13 20:23Noris_Sulheru   
Porque pierdo entre 2100 y 2200 bytes con este codigo:

class Server
{
    TcpListener tl;
    Socket s;
    NetworkStream ns;

    DataSet ds;

    void connect(IPAddress IPAddress, int Port)
    {
        tl = new TcpListener(IPAddress, Port);
        tl.Start();
        s = tl.AcceptSocket();
        ns = new NetworkStream(s);
        ds.ReadXml(ns);
    }
    void desconnect()
    {
        tl.Stop();
        s.Close();
    }
}

class client
{
    TcpClient tc;
    Stream strm;
    DataSet ds;

    void sendDB(IPAddress IPAddress, int Port)
    {
        tc = new TcpClient();
        tc.Connect(IPAddress, Port);
        strm = tc.GetStream();
        ds.ReadXml("miArchivo.xml");
        ds.WriteXml(strm);
    }
}

Soy relativamente nuevo con Stream aunke ya he experimentado con DataSet y Xml.
Cuando mi Class Server recibe los datos, pierde los primeros 2100 a 2200 bytes de datos independientemente del tamaño del archivo original.
Si dijeramos ke el archivo se corta por ser demasiado grande debería ser un corte proporcional pero tengo los respecticos cortes:

-1326619bytes: Pierde los primeros 2167 bytes
-3309bytes: Pierde los primeros 2179 bytes
-10168bytes: Pierde los primeros 2164 bytes

Son cortes muy desproporcionados a sus archivos.

Otro dato. Si uso un archivo inferior a 2048bytes, este ni se transmite.

Noris
[Editado: Noris_Sulheru, 15/04/2013 20:24:14]
[Noris_Sulheru, 15/04/2013 20:24:59]
[Noris_Sulheru, 15/04/2013 20:25:41]
[Noris_Sulheru, 15/04/2013 20:37:54]
[Noris_Sulheru, 15/04/2013 21:29:09]
IDAsuntoFechaNick 
57034 Re: perdida de Informacion con NetworkStream (Resp: 57033)15/04/13 22:28Noris_Sulheru   
Solucionado

public class Server
    {
        TcpListener tl;
        Socket s;
        NetworkStream ns;

        public DataSet ds;

        public Server() { ds = new DataSet(); }

        public void connect(IPAddress IPAddress, int Port)
        {
            tl = new TcpListener(IPAddress, Port);
            tl.Start();
            s = tl.AcceptSocket();
            ns = new NetworkStream(s);
            ds.ReadXml(ns);
        
            tl.Stop();
            s.Close();
        }
    }

    public class Client
    {
        TcpClient tc;
        Stream strm;
        public DataSet ds;

        public Client() { ds = new DataSet(); }

        public void connect(IPAddress IPAddress, int Port)
        {
            tc = new TcpClient();
            tc.Connect(IPAddress, Port);
            strm = tc.GetStream();

            ds.WriteXml(strm);
            tc.Close();
        }
    }

El problema residía en que trataba de reutilizar el mismo Stream y Socket sin cerrarlos una y otra vez.

Noris


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.

 
(c) Guillermo 'guille' Som, 2005-2017  - foros.elGuille v1.0.5.3 (23/Mar/2009 14:50 GMT +1)  - (ASP.NET 2.0 v2.0.50727.8762)
 
Usuarios activos: 108 - App. iniciada: 18/10/2017 12:09:21 GMT - La hora GMT del servidor es: 18/10/2017 13:13:22 GMT