Error

C++博客 首页 新随笔 联系 聚合 管理
  217 Posts :: 61 Stories :: 32 Comments :: 0 Trackbacks
// IOCP_Learn.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <WinSock2.h>
// 根据某结构体中一个成员的地址,计算出外层结构体的地址
//CONTAINING_RECORD
class CTest_CONTAINING_RECORD
{
public:
    void Test()
    {
        CTest_CONTAINING_RECORD* pTest = CONTAINING_RECORD(&m_i, CTest_CONTAINING_RECORD, m_i);
        std::cout << reinterpret_cast<unsigned int>(this) << std::endl;
        std::cout << reinterpret_cast<unsigned int>(pTest) << std::endl;
    }
private:
    int m_i;
};
//OVERLAPPED
namespace iocp
{
enum EM_IOCP_OP_TYPE
{
    emIOCP_POST_SEND = 0, 
    emIOCP_POST_ASYNC_RECV,
    emIOCP_POST_ACCEPT,
    emIOCP_DISSCONNECT
};
};//~ end of namespace iocp
// 直接继承OVERLAPPED,根据C++对象的内存布局可以确定stIOCP_OVERLAPPED和static_cast<OVERLAPPED>(obj_stIOCP_OVERLAPPED)
// 是一样的
struct stIOCP_OVERLAPPED : public OVERLAPPED
{
    WSABUF wsabuf;
    EM_IOCP_OP_TYPE optype;
};

// 还有一个是关联的key,没有提到,以及关联socket句柄和完成提示
int _tmain(int argc, _TCHAR* argv[])
{
    CTest_CONTAINING_RECORD test;
    test.Test();
return 0;
}
posted on 2013-03-28 23:25 Enic 阅读(279) 评论(0)  编辑 收藏 引用 所属分类: iocp

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理