下载此文档

c#的共享内存资源管理类.docx


文档分类:IT计算机 | 页数:约3页 举报非法文档有奖
1/3
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/3 下载此文档
文档列表 文档介绍
C#实现的可复用Socket接收/发送共享缓冲区
作者:佚名 来源:发布时间:08-11-11浏览:懸4864次
惡在 Socket 的接收/发送方法:Send()、BeginSend()、Receive。、BeginReceive()essionCount;
m_recvBuffer = new byte[m_totalRecvLength]; // 接收缓冲区 m_sendBuffer = new byte[m_totalSendLength];
}
public int RecvBufferSize
{
get { return m_recvBufferSize; }
}
public int SendBufferSize
{
get { return m_sendBufferSize; } }
public byte[] RecvBuffer
{
get { return m_recvBuffer; }
}
public byte[] SendBuffer
{
get { return m_sendBuffer; }
}
public void FreeOffset(int recvOffset, int sendOffset)
{
lock (this)
{
(recvOffset); // 回收缓冲区偏移地址 (sendOffset);
}
}
public void GetOffset(ref int recvOffset, ref int sendOffset)
{
lock (this)
{
if ( > 0) // 有释放的可重用缓冲区
{
sendOffset = (); // 再次使用
recvOffset = ();
}
else
{
if (m_totalRecvLength >= m_availableRecvOffset + m_recvBufferSize && m_totalSendLength >= m_availbleSendOffset + m_recvBufferSize) // 有空间 {
recvOffset = m_availableRecvOffset; sendOffset = m_availbleSendOffset;
m_availableRecvOffset += m_recvBufferSize; // 调整可用块指针 m_availbleSendOffset += m_sendBufferSize;
}
else
{
throw new IndexOutOfRangeException("buffer index out of range.");
}
}
}
} } 上述代 码中 , m_maxSessionCount 是 Socket 服务 器最 大的 可连 客户 端 Socket 数, BufferManager 构造函数要求该数以及接

c#的共享内存资源管理类 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数3
  • 收藏数0 收藏
  • 顶次数0
  • 上传人niupai21
  • 文件大小11 KB
  • 时间2022-05-20