青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天行健 君子當自強而不息

創建游戲內核(23)

 

本篇是創建游戲內核(22)的續篇,涉及到的DirectPlay基礎知識請參閱使用DirectPlay進行網絡互聯(1)

 

網絡內核包括三個類:NETWORK_ADAPTERNETWORK_SERVERNETWORK_CLIENT

 

使用NETWORK查詢網絡適配器


NETWORK_ADAPTER類用于枚舉系統上安裝了的TCP/IP設備。為了同客戶端建立連接,必須知道設備的GUID,這正是NETWORK_ADAPTER類的用途。


來看看NETWORK_ADAPTER類的定義:

//====================================================================================
// This class encapsulate for network adapters.
//====================================================================================
typedef class NETWORK_ADAPTER
{
public:
    NETWORK_ADAPTER();
    ~NETWORK_ADAPTER();

    BOOL init();
    
void shutdown();

    
long get_num_adapters();
    BOOL get_name(
ulong index, char* name);
    GUID* get_guid(
ulong index);

    
static HRESULT WINAPI net_msg_handler(PVOID user_contex, DWORD msg_id, PVOID msg_buffer);

private:
    DPN_SERVICE_PROVIDER_INFO* _adapter_list;
    
ulong _num_adapters;
} *NETWORK_ADAPTER_PTR;

接著是它的實現:

//---------------------------------------------------------------------------------
// Callback function that receives all messages from the server, and receives indications 
// of session changes from the IDirectPlay8Client interface. 
//---------------------------------------------------------------------------------
HRESULT WINAPI NETWORK_ADAPTER::net_msg_handler(PVOID user_contex, DWORD msg_id, PVOID msg_buffer)
{
    
return S_OK;
}

//---------------------------------------------------------------------------------
// Constructor, initialize member data.
//---------------------------------------------------------------------------------
NETWORK_ADAPTER::NETWORK_ADAPTER()
{
    _adapter_list = NULL;
}

//---------------------------------------------------------------------------------
// Destructor, release resource.
//---------------------------------------------------------------------------------
NETWORK_ADAPTER::~NETWORK_ADAPTER()
{
    shutdown();
}

//---------------------------------------------------------------------------------
// Release resource.
//---------------------------------------------------------------------------------
void NETWORK_ADAPTER::shutdown()
{
    delete[] _adapter_list;
    _adapter_list = NULL;

    _num_adapters = 0;
}

//---------------------------------------------------------------------------------
// Enumerate adapter lists.
//---------------------------------------------------------------------------------
BOOL NETWORK_ADAPTER::init()
{
    IDirectPlay8Client* client = NULL;
    DWORD size = 0;

    
// free allocated resource first
    shutdown();

    
// create DirectPlay client component
    if(FAILED(CoCreateInstance(CLSID_DirectPlay8Client, NULL, CLSCTX_INPROC, IID_IDirectPlay8Client, (void**) &client)))
        
return FALSE;

    
// assign a message handler to network component
    if(FAILED(client->Initialize(NULL, net_msg_handler, 0)))
        
goto fail;

    
// query the required size of the data buffer
    if(client->EnumServiceProviders(&CLSID_DP8SP_TCPIP, NULL, _adapter_list, &size, &_num_adapters, 0) 
            != DPNERR_BUFFERTOOSMALL)
        
goto fail;

    
// allocate a buffer
    if((_adapter_list = (DPN_SERVICE_PROVIDER_INFO*) new BYTE[size]) == NULL)
        
goto fail;

    
// enumerate again
    if(FAILED(client->EnumServiceProviders(&CLSID_DP8SP_TCPIP, NULL, _adapter_list, &size, &_num_adapters, 0)))
        
goto fail;

    client->Release();
    
return TRUE;

fail:
    client->Release();
    
return FALSE;
}

//---------------------------------------------------------------------------------
// Get number of adapters.
//---------------------------------------------------------------------------------
long NETWORK_ADAPTER::get_num_adapters()
{
    
return _num_adapters;
}

//---------------------------------------------------------------------------------
// Get adapter name.
//---------------------------------------------------------------------------------
BOOL NETWORK_ADAPTER::get_name(ulong index, char* name)
{
    
if(_adapter_list == NULL || index >= _num_adapters)
        
return FALSE;

    
// name must be at least MAX_PATH bytes in size
    wcstombs(name, _adapter_list[index].pwszName, MAX_PATH);

    
return TRUE;
}

//---------------------------------------------------------------------------------
// Return pointer to adapter GUID.
//---------------------------------------------------------------------------------
GUID* NETWORK_ADAPTER::get_guid(ulong index)
{
    
if(_adapter_list == NULL || index >= _num_adapters)
        
return FALSE;

    
return &_adapter_list[index].guid;
}
 

測試代碼:
/*****************************************************************************
PURPOSE:
    Test for class NETWORK_ADAPTER.
*****************************************************************************/


#include "Core_Global.h"

class APP : public APPLICATION
{
public:
    BOOL init()
    {
        
if(! _adapter.init())
            
return FALSE;

        
char buffer[2048] = {0};
        
char name[MAX_PATH] = {0};
        
char temp[MAX_PATH] = {0};

        
for(long i = 0; i < _adapter.get_num_adapters(); i++)
        {           
            _adapter.get_name(i, name);
            
            sprintf(temp, "%d: %s\n", i, name);

            strcat(buffer, temp);
        }

        MessageBox(NULL, buffer, "adapter_test", MB_OK);
        
        
return TRUE;
    }

    BOOL frame()
    {
        
return TRUE;
    }

    BOOL shutdown()
    {
        
return TRUE;
    }

private:
    NETWORK_ADAPTER _adapter;   
};

int PASCAL WinMain(HINSTANCE inst, HINSTANCE, LPSTR cmd_line, int cmd_show)
{
    APP app;

    
return app.run();
}

下載源碼和工程

程序截圖:


posted on 2007-10-11 22:21 lovedday 閱讀(227) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


公告

導航

統計

常用鏈接

隨筆分類(178)

3D游戲編程相關鏈接

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲一区二区三区视频播放| 久久精品人人爽| 国产精品久久久久aaaa| 亚洲欧美日韩精品久久| 久久久久久久高潮| 亚洲国产另类久久久精品极度| 欧美激情中文不卡| 亚洲影院免费观看| 嫩草成人www欧美| 亚洲天堂偷拍| 狠狠久久亚洲欧美| 欧美日韩国产美女| 久久se精品一区二区| 亚洲风情亚aⅴ在线发布| 99热在线精品观看| 国产日韩在线看片| 欧美国产日韩一区二区| 亚洲免费视频在线观看| 亚洲国产精品久久久久婷婷老年| 亚洲一区二区三区777| 伊人久久综合97精品| 欧美日韩亚洲国产精品| 久久久久**毛片大全| 艳女tv在线观看国产一区| 美日韩精品视频| 亚洲欧美精品suv| 亚洲精品日韩在线| 国内精品国语自产拍在线观看| 欧美片第1页综合| 久久久久久久波多野高潮日日| 日韩亚洲成人av在线| 欧美成在线观看| 久久国产精品久久久久久| 一本色道久久88精品综合| 精品91在线| 国产欧美日韩| 欧美色偷偷大香| 欧美 日韩 国产 一区| 欧美一区二区三区免费视| 亚洲三级视频| 欧美国产综合视频| 久久久在线视频| 欧美一区二区三区四区在线| 一本色道久久综合亚洲精品不| 136国产福利精品导航| 国产日韩欧美a| 国产精品美女久久久久久免费| 欧美日本国产在线| 免费成人高清在线视频| 久久精品国产99精品国产亚洲性色 | 国产亚洲激情| 国产精品护士白丝一区av| 欧美精品在线视频观看| 欧美大片在线看| 美国成人毛片| 麻豆精品精华液| 久久免费视频在线观看| 久久久精品久久久久| 久久精品成人| 久久乐国产精品| 久久激情五月丁香伊人| 久久精品亚洲乱码伦伦中文 | 久久国产手机看片| 先锋亚洲精品| 欧美一区二区在线观看| 欧美影院午夜播放| 欧美一区二区观看视频| 久久国产精品一区二区| 久久激情视频久久| 久久精品水蜜桃av综合天堂| 久久精品二区三区| 久久精品盗摄| 久久在线播放| 欧美电影资源| 亚洲欧洲在线看| 日韩视频一区二区三区| 亚洲视频福利| 欧美一区三区三区高中清蜜桃| 欧美在线播放高清精品| 久久只有精品| 欧美另类videos死尸| 国产精品成人在线| 国产亚洲成精品久久| 在线精品国精品国产尤物884a| 亚洲欧洲一区二区三区在线观看 | 欧美三级在线| 国产欧美va欧美va香蕉在| 国内自拍一区| 亚洲精品日韩久久| 亚洲自拍啪啪| 蜜臀av性久久久久蜜臀aⅴ| 亚洲国产91色在线| 一区二区三区黄色| 午夜视频久久久| 毛片一区二区三区| 欧美午夜a级限制福利片| 国产欧美欧美| 亚洲精品乱码久久久久久按摩观| 一区二区三区四区国产| 欧美呦呦网站| 亚洲第一色中文字幕| 一区二区三区精品久久久| 欧美专区福利在线| 欧美激情在线免费观看| 国产日韩成人精品| 日韩午夜激情| 久久嫩草精品久久久久| 亚洲精品美女在线观看播放| 性久久久久久久久| 欧美国产日韩视频| 国产日韩精品综合网站| 日韩亚洲在线| 久久久噜久噜久久综合| 亚洲精品综合| 久久蜜桃精品| 国产精品久久久久影院色老大 | 国产日韩欧美在线播放| 亚洲人成高清| 久久免费高清| 一本色道久久综合亚洲精品小说 | 欧美日韩大片一区二区三区| 国内久久精品| 亚洲欧美日韩在线高清直播| 亚洲电影在线| 久久精品国产免费观看| 国产精品乱码久久久久久| 亚洲精品一区二区三区四区高清| 久久久国产精品一区二区中文| 日韩亚洲视频在线| 欧美成年人网| 在线免费不卡视频| 久久精品国产一区二区电影| 在线综合亚洲欧美在线视频| 欧美大片免费| 亚洲国产精品成人久久综合一区| 久久国产精品99国产精| 一区二区欧美激情| 欧美精品一区在线| 亚洲国产99精品国自产| 久久综合一区| 欧美一区二区三区四区在线观看地址| 欧美日韩一区在线播放| 99精品欧美一区二区三区| 欧美韩国在线| 欧美xart系列高清| 1000部精品久久久久久久久| 久久视频一区| 欧美一区二区免费观在线| 国产精品一区在线播放| 亚洲在线一区| 在线中文字幕一区| 国产精品mm| 亚洲影视在线播放| 一道本一区二区| 国产精品国产馆在线真实露脸| 中文一区二区| 亚洲性xxxx| 国产精品久久一卡二卡| 性久久久久久| 欧美一区二区三区四区高清| 国产一区二区三区观看| 久久久综合视频| 久久久免费精品视频| 亚洲成人自拍视频| 91久久黄色| 欧美日韩一区二区欧美激情| 亚洲欧美日韩成人| 午夜精品一区二区在线观看| 国内精品国产成人| 女人香蕉久久**毛片精品| 欧美成人精品在线播放| 日韩视频一区二区三区| 一本色道久久88综合亚洲精品ⅰ| 国产精品免费看| 久久精品一区二区三区不卡牛牛 | 欧美电影资源| 一区二区三区欧美激情| 一区二区三区欧美激情| 国产女主播一区二区三区| 免费观看一区| 欧美片网站免费| 欧美在线一级视频| 久久婷婷国产综合国色天香| 洋洋av久久久久久久一区| 亚洲四色影视在线观看| 狠狠88综合久久久久综合网| 亚洲国产成人在线视频| 欧美性猛片xxxx免费看久爱| 久久免费视频网| 欧美国产日韩一区二区三区| 午夜在线视频观看日韩17c| 久久久久国产精品一区三寸| 99视频超级精品| 欧美一区二区视频在线观看2020 | 亚洲最黄网站| 午夜欧美精品久久久久久久| 亚洲国产三级| 亚洲在线第一页| 91久久久久久国产精品| 亚洲一级黄色|