资源简介
自己实现了一个环形缓冲区的简单类,并且做了一个TCP 服务端对这个类进行了用法演示
代码片段和文件信息
#include “StdAfx.h“
#include “CycleBuffer.h“
CCycleBuffer::CCycleBuffer(int size)
{
InitializeCriticalSection(&m_cs);
m_nBufSize = size;
m_nReadPos = 0;
m_nWritePos = 0;
m_pBuf = (char *)calloc(1 size);
m_bEmpty = TRUE;
m_bFull = FALSE;
}
CCycleBuffer::~CCycleBuffer()
{
if(m_pBuf)
{
free(m_pBuf);
m_pBuf = NULL;
}
DeleteCriticalSection(&m_cs);
}
/****************************************
向缓冲区写入数据
返回值:
-1 写入出错
>=0 写入的字节数
****************************************/
unsigned int CCycleBuffer::WriteBuffer(char* buf unsigned int count)
{
EnterCriticalSection(&m_cs);
int ret = -1;
// 缓冲区已满,或希望写入的字节是0
if(m_bFull || count <= 0)
{
ret = 0;
}
else if(m_nReadPos <= m_nWritePos)
{
/*
1. m_nReadPos == m_nWritePos
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6645 2013-11-04 11:43 TCPServer.cpp
文件 830 2013-03-21 16:05 TCPServer.h
文件 6364 2013-11-04 11:25 CycleBuffer.cpp
文件 597 2013-03-21 16:05 CycleBuffer.h
文件 761 2013-11-04 11:43 NetProtocal.h
文件 1811 2013-03-21 16:05 TCPBufferManager.cpp
文件 1035 2013-03-21 16:05 TCPBufferManager.h
----------- --------- ---------- ----- ----
18043 7
- 上一篇:windows版本MD5校验工具
- 下一篇:mBookMaker漫画制作
评论
共有 条评论