王骏的BLOG
编程、网络技术点滴...
<2007年11月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678
公告

留言簿(24)

随笔分类

随笔档案

文章分类

文章档案

相册

WEB开发

相关链接

搜索

最新评论

阅读排行榜

评论排行榜

 
VC知识库BLOG   首页  新随笔  联系  聚合  登录 
  随笔-61 文章-5 评论-247 Trackbacks-0
一些IOCP处理数据收发的代码片断
接收完成操作函数

bool CIOCPServer::OnClientReading(ClientContext* pContext, DWORD dwIoSize)
{
    CLock cs(CIOCPServer::m_cs, 
"OnClientReading");

    
if (dwIoSize == 0)
    
{
        RemoveStaleClient( pContext, FALSE );
        
return false;
    }


    
// 添加到缓冲区 Add the message to out message
    
// Dont forget there could be a partial, 1, 1 or more + partial mesages
    pContext->m_ReadBuffer.Write(pContext->m_byInBuffer,dwIoSize);

    ..

}



发送完成处理函数

bool CIOCPServer::OnClientWriting(ClientContext* pContext, DWORD dwIoSize)
{
    ULONG ulFlags 
= MSG_PARTIAL;

    
// 已经发送的数据需要从发送缓冲中去除 Finished writing - tidy up
    pContext->m_WriteBuffer.Delete(dwIoSize);

    
// 判断写缓冲中的数据是否还有未发送的
    if (pContext->m_WriteBuffer.GetBufferLen() == 0)
    
{
        
// 发送完成
        pContext->m_WriteBuffer.ClearBuffer();
        
// 发送完成,写完成事件置位 Write complete
        SetEvent(pContext->m_hWriteComplete);
        
return true;            // issue new read after this one

    }

    
else
    
{
        
// 还有数据需要发送 
        OVERLAPPEDPLUS * pOverlap = new OVERLAPPEDPLUS(IOWrite);

        m_pNotifyProc((LPVOID) m_pFrame, pContext, NC_TRANSMIT);

        
// 处理数据发送工作
        pContext->m_wsaOutBuffer.buf = (char*) pContext->m_WriteBuffer.GetBuffer();
        pContext
->m_wsaOutBuffer.len = pContext->m_WriteBuffer.GetBufferLen();

        
int nRetVal = WSASend(pContext->m_Socket, 
                        
&pContext->m_wsaOutBuffer,
                        
1,
                        
&pContext->m_wsaOutBuffer.len, 
                        ulFlags,
                        
&pOverlap->m_ol, 
                        NULL);


        
if ( nRetVal == SOCKET_ERROR && WSAGetLastError() != WSA_IO_PENDING ) 
            RemoveStaleClient( pContext, FALSE );

    }

    
    
return false;            // issue new read after this one
}


发送数据

void CIOCPServer::Send(const CString& strClient, CString strData)
{
    ClientContext
* pContext = FindClient(strClient);
    
if (pContext == NULL)
        
return;
        
    
int nBufLen = strData.GetLength();

    
// 将需要发送的数据放入缓冲区 4 byte header [Size of Entire Packet]
    pContext->m_WriteBuffer.Write((PBYTE) &nBufLen, sizeof(nBufLen));

    pContext
->m_WriteBuffer.Write((PBYTE) strData.GetBuffer(nBufLen), nBufLen);
    
    
// 等待上次发送结束 Wait for Data Ready signal to become available
    WaitForSingleObject(pContext->m_hWriteComplete, INFINITE);

    
// 到这里,上一次数据已经全部发送完成

    
// 准备好发送缓冲区(?)
    int nSize = pContext->m_WriteBuffer.GetBufferLen();
    pContext
->m_wsaOutBuffer.buf = (CHAR*new BYTE[nSize];
    pContext
->m_wsaOutBuffer.len = nSize;

    
// 通知工作者线程可以进行写操作
    OVERLAPPEDPLUS * pOverlap = new OVERLAPPEDPLUS(IOWrite);
    PostQueuedCompletionStatus(m_hCompletionPort, 
0, (DWORD) pContext, &pOverlap->m_ol);

    pContext
->m_nMsgOut++;

}


posted on 2007-11-20 16:34 王骏的BLOG 阅读(1091) 评论(7)  编辑 收藏
Comments
  • # re: IOCP代码片断一
    bvcb
    Posted @ 2008-01-18 11:23
    [URL=http://www.zyydjx.com/about.htm]制袋机[/URL] [URL=http://www.hu-song.cn/eKultur.htm">http://www.hu-song.cn/eKultur.htm]die cutting machine[/URL] [URL=http://www.hu-song.cn/eKultur.htm">http://www.hu-song.cn/eKultur.htm]auto slitting machine[/URL] [URL=http://www.hu-song.cn/eabout.htm]flexo printing machine[/URL] [URL=http://www.cnxinye.com]bag-making machine[/URL] [url=http://www.cnxinda.cn]制袋机[/url] [url=http://www.cnxinda.cn/lianx.htm]吹膜机[/url] [url=http://www.chuangsj.com/myshow.asp]GOOGLE排名[/url] [url=http://www.zjbeiyin.com]压痕机[/url][url=http://www.gxysjx.com">http://www.gxysjx.com]印刷机[/url] [url=http://www.gxysjx.com">http://www.gxysjx.com]吹膜机[/url] [url=http://www.65137889.com">http://www.65137889.com]印刷机械[/url] [url=http://www.65137889.com">http://www.65137889.com]凹版印刷机[/url] [url=http://www.dong-hai.net]印刷机[/url]
  • # re: IOCP代码片断一
    bvcb
    Posted @ 2008-01-18 11:24
    [url=http://www.lgxinfeng.com">http://www.lgxinfeng.com">http://www.lgxinfeng.com">http://www.lgxinfeng.com]丝印机[/url] [url=http://www.lgxinfeng.com">http://www.lgxinfeng.com">http://www.lgxinfeng.com">http://www.lgxinfeng.com]丝网印刷机[/url] [url=http://www.lgxinfeng.com">http://www.lgxinfeng.com">http://www.lgxinfeng.com">http://www.lgxinfeng.com]全动丝印机[/url] [url=http://www.lgxinfeng.com">http://www.lgxinfeng.com">http://www.lgxinfeng.com">http://www.lgxinfeng.com/101.asp]网印机[/url] [url=http://www.lgxinfeng.com">http://www.lgxinfeng.com">http://www.lgxinfeng.com">http://www.lgxinfeng.com/101.asp]晒版机[/url] [url=http://www.lgxinfeng.com">http://www.lgxinfeng.com">http://www.lgxinfeng.com">http://www.lgxinfeng.com/101.asp]拉网机[/url] [url=http://www.lgxinfeng.com">http://www.lgxinfeng.com">http://www.lgxinfeng.com">http://www.lgxinfeng.com/202.asp]UV光固机[/url] [url=http://www.lgxinfeng.com">http://www.lgxinfeng.com">http://www.lgxinfeng.com">http://www.lgxinfeng.com/202.asp]光固机[/url] [url=http://www.lgxinfeng.com">http://www.lgxinfeng.com">http://www.lgxinfeng.com">http://www.lgxinfeng.com/202.asp]胶印光固机[/url] [URL=http://www.zyydjx.com">http://www.zyydjx.com]吹膜机[/URL] [URL=http://www.zyydjx.com">http://www.zyydjx.com]制袋机[/URL] 
  • # re: IOCP代码片断一
    bvcb
    Posted @ 2008-01-18 11:24
    <a href="http://www.hu-song.cn/eabout.htm">label printing machine</a> <a href="http://www.hu-song.cn/eabout.htm">flexo printing machine</a> <a href="http://www.hu-song.cn/eKultur.htm">auto slitting machine</a> <a href="http://www.cnxinye.com">bag-making machine</a> <a href="http://www.hu-song.cn/eKultur.htm">die cutting machine</a> <a href="http://www.cnxinda.cn">制袋机</a> <a href="http://www.cnxinda.cn/lianx.htm">吹膜机</a><a href="http://www.chuangsj.com/myshow.asp">GOOGLE排名</a> <a href="http://www.zjbeiyin.com">压痕机</a> <a href="http://www.gxysjx.com">印刷机</a> <a href="http://www.gxysjx.com">吹膜机</a> <a href="http://www.65137889.com">印刷机械</a> <a href="http://www.65137889.com">凹版印刷机</a> <a href="http://www.dong-hai.net">印刷机</a> 
  • # re: IOCP代码片断一
    bvcb
    Posted @ 2008-01-18 11:24
    <a href="http://www.lgxinfeng.com">丝印机</a> <a href="http://www.lgxinfeng.com">丝网印刷机</a> <a href="http://www.lgxinfeng.com">全动丝印机</a> <a href="http://www.lgxinfeng.com/101.asp">网印机</a> <a href="http://www.lgxinfeng.com/101.asp">晒版机</a> <a href="http://www.lgxinfeng.com/101.asp">拉网机</a> <a href="http://www.lgxinfeng.com/202.asp">UV光固机</a> <a href="http://www.lgxinfeng.com/202.asp">光固机</a> <a href="http://www.lgxinfeng.com/202.asp">胶印光固机</a> <a href="http://www.zyydjx.com">吹膜机</a> <a href="http://www.zyydjx.com">制袋机</a> <a href="http://www.zyydjx.com/about.htm">制袋机</a>
  • # xbjxzkik
    xbjxzkik
    Posted @ 2008-05-07 02:56
     [URL=http://obmfrpkb.com]uwmlokbf[/URL]  <a href="http://thyhgxsv.com">gsenvkvf</a>  gdjxxdse http://vqktitko.com gvbxotin xwnklhhv 
  • # re: IOCP代码片断一
    gfdsgf
    Posted @ 2008-06-10 10:54
    [URL=http://www.zjrarj.com">http://www.zjrarj.com]吹膜机[/URL][URL=http://www.zjrarj.com">http://www.zjrarj.com]背心袋设备[/URL][URL=http://www.zjyifeng.com]压痕机[/URL][URL=http://www.cnchuangfu.com]压痕机[/URL][URL=http://www.cnchuangfu.com/about.htm]模切机[/URL][URL=http://www.cnchuangfu.com/about101.htm]全自动电脑模切机[/URL] [url=http://www.lihongcn.com]枕式包装机[/url] [url=http://www.lihongcn.com/index101.asp]月饼包装机[/url] [url=http://www.lihongcn.com/about.asp]面包包装机[/url] [url=http://www.lihongcn.com/about.asp]饼干包装机[/url] [url=http://www.lihongcn.com/bout.asp]求购包装机[/url] [URL=http://www.chuangsj.com/myshow.asp]GOOGLE排名[/URL][url=http://www.lihongcn.com/about101.asp]湿巾包装机[/url] [url=http://www.lihongcn.com/about101.asp]背封包装机[/url] [url=http://www.lihongcn.com/bout.asp]包装机价格[/url] [URL=http://www.lgxinfeng.com/E101.asp">http://www.lgxinfeng.com/E101.asp]Package Printing machinery[/URL] [URL=http://www.lgxinfeng.com/E101.asp">http://www.lgxinfeng.com/E101.asp]Packaging machinery[/URL][URL=http://www.hu-song.cn/eKultur.htm]die-cutting machine[/URL][URL=http://www.hu-song.cn/eproducts.htm]auto slitting machine[/URL]
  • # re: IOCP代码片断一
    gfhg
    Posted @ 2008-06-10 10:54
    [URL=http://www.dybj.com/product/product.asp">http://www.dybj.com/product/product.asp]缠绕膜机[/URL][URL=http://www.lgxinfeng.com">http://www.lgxinfeng.com/Eabout.asp">http://www.lgxinfeng.com">http://www.lgxinfeng.com/Eabout.asp]Screen Printing Machine[/URL][URL=http://www.cnxinye.cn">http://www.cnxinye.cn">http://www.cnxinye.cn">http://www.cnxinye.cn]制袋机[/URL][URL=http://www.cnxinye.cn">http://www.cnxinye.cn">http://www.cnxinye.cn">http://www.cnxinye.cn]无纺布制袋机[/URL][URL=http://www.cnxinye.cn">http://www.cnxinye.cn">http://www.cnxinye.cn">http://www.cnxinye.cn/Prodzd.html]吹膜机[/URL][URL=http://www.cnxinda.cn/index1.asp]无纺布织布机[/URL][URL=http://www.ruianpack.com]制袋机[/URL] [URL=http://www.ruianpack.com/aboutus.asp]无纺布制袋机[/URL][URL=http://www.gxysjx.com">http://www.gxysjx.com]印刷机[/URL] [URL=http://www.gxysjx.com">http://www.gxysjx.com]吹膜机[/URL] [URL=http://www.hu-song.com]印刷机[/URL][URL=http://www.lgxinfeng.com">http://www.lgxinfeng.com]丝网印刷机[/URL] [URL=http://www.lgxinfeng.com">http://www.lgxinfeng.com]丝印机[/URL] [url=http://www.hu-song.com/web/cn_product.asp.htm]分切机[/url][URL=http://www.dybj.com/product/product.asp">http://www.dybj.com/product/product.asp]缠绕膜机[/URL][URL=http://www.datianjx.cn">http://www.datianjx.cn]热切制袋机[/URL] [URL=http://www.datianjx.cn">http://www.datianjx.cn]冷切制袋机[/URL] [URL=http://www.cnxinye.cn">http://www.cnxinye.cn">http://www.cnxinye.cn">http://www.cnxinye.cn]制袋机[/URL] 
标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]