C# 套接字自动缓冲区大小

C# 套接字自动缓冲区大小,c#,.net,sockets,C#,.net,Sockets,我试图创建一个C套接字客户端,但是当我创建一个256的缓冲区时 public class StateObject { // Size of receive buffer. public const int BufferSize = 256; // the buffer size :/ // Receive buffer. public byte[] Buffer = new byte[BufferSize]; // Received data string

我试图创建一个C套接字客户端,但是当我创建一个256的缓冲区时

public class StateObject
{
    // Size of receive buffer.
    public const int BufferSize = 256; // the buffer size :/
    // Receive buffer.
    public byte[] Buffer = new byte[BufferSize];
    // Received data string.
    public StringBuilder Sb = new StringBuilder();
    public Socket WorkSocket = null;
}
我丢失了一些接收到的缓冲区,并开始作为一个分离的缓冲区数组接收, 如果我创建了一个1000大小的缓冲区,那么如果我接收到一个小大小的缓冲区,我就浪费了太多的内存。有没有办法使缓冲区大小自动

这是我用于连接回拨和接收回拨的代码

    private void OnConnectCallBack(IAsyncResult ar)
    {
        Socket.EndConnect(ar);
        Connection = Connection.Connected;
        if (OnConnect != null) OnConnect(this, CONNECTION_FROM.CLIENT);
        // Begin receiving the data from the remote device.
        Socket.BeginReceive(State.Buffer, 0, StateObject.BufferSize, 0, OnReceiveCallBack, State);
    }

    private void OnReceiveCallBack(IAsyncResult ar)
    {
        int bytesRead = Socket.EndReceive(ar);
        // There might be more data, so store the data received so far.
        if (OnReceive != null) OnReceive(this, State.Buffer, CONNECTION_FROM.CLIENT);
        // Get the rest of the data.
        Socket.BeginReceive(State.Buffer, 0, StateObject.BufferSize, 0,
            OnReceiveCallBack, State);
    }

我已经编辑了你的标题。请看,如果一致意见是否定的,他们不应该这样做。您缺少代码的提取部分,请与我们共享,以便我们可以帮助您。没有自动缓冲区大小这样的内容。为什么不在消息的开头使用固定长度说明符字节来指定消息的长度,然后追加消息?