C sharp - Socket Asincrono

 
Vista:

Socket Asincrono

Publicado por Cesar Alvarado (1 intervención) el 14/10/2016 20:29:07
Hay forma de crear un buffer dinámico, es decir no fijar un tamaño a un buffer fijo.Actualmente realizo lo siguiente:

Este metodo en el BeginRead ya fija el tamaño de 1024, y lo que ocasiona es que parta el mensaje.Yo puedo definir un tamaño mayor pero no es lo que deseo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void OnClientAccepted(IAsyncResult ar)
{
    TcpListener listener = ar.AsyncState as TcpListener;
    if (listener == null)
        return;
 
    try
    {
        ClientContext context = new ClientContext();
        context.Client = listener.EndAcceptTcpClient(ar);
        context.Stream = context.Client.GetStream();
        context.Stream.BeginRead(context.Buffer, 0, context.Buffer.Length, OnClientRead, context);
    }
    catch (Exception ex)
    {
        string errorMessage = string.Format("ExceptionMessage:\n{0}\n\nExceptionTrace:\n{1}", ex.Message, ex.StackTrace);
        _logger.LogError(errorMessage, MethodBase.GetCurrentMethod().Name);
    }
    finally
    {
        listener.BeginAcceptTcpClient(OnClientAccepted, listener);
    }
}

La clase cliente context:

1
2
3
4
5
6
7
class ClientContext
{
    public TcpClient Client;
    public Stream Stream;
    public byte[] Buffer = new byte[1024];
    public MemoryStream Message = new MemoryStream();
}

Favor apoyenme con esta duda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder