C# 套接字自动缓冲区大小
我试图创建一个C套接字客户端,但是当我创建一个256的缓冲区时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
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);
}
我已经编辑了你的标题。请看,如果一致意见是否定的,他们不应该这样做。您缺少代码的提取部分,请与我们共享,以便我们可以帮助您。没有自动缓冲区大小这样的内容。为什么不在消息的开头使用固定长度说明符字节来指定消息的长度,然后追加消息?