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

天行健 君子當自強而不息

創(chuàng)建游戲內(nèi)核(23)

 

本篇是創(chuàng)建游戲內(nèi)核(22)的續(xù)篇,涉及到的DirectPlay基礎(chǔ)知識請參閱使用DirectPlay進行網(wǎng)絡(luò)互聯(lián)(1)

 

網(wǎng)絡(luò)內(nèi)核包括三個類:NETWORK_ADAPTERNETWORK_SERVERNETWORK_CLIENT

 

使用NETWORK查詢網(wǎng)絡(luò)適配器


NETWORK_ADAPTER類用于枚舉系統(tǒng)上安裝了的TCP/IP設(shè)備。為了同客戶端建立連接,必須知道設(shè)備的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;

接著是它的實現(xiàn):

//---------------------------------------------------------------------------------
// 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)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


公告

導(dǎo)航

統(tǒng)計

常用鏈接

隨筆分類(178)

3D游戲編程相關(guān)鏈接

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            日韩亚洲在线| 香蕉成人伊视频在线观看| 亚洲女女做受ⅹxx高潮| 亚洲全部视频| 欧美~级网站不卡| 玖玖精品视频| 理论片一区二区在线| 久久视频免费观看| 免费看黄裸体一级大秀欧美| 久久精品亚洲国产奇米99| 久久综合色婷婷| 久久成人在线| 免费在线亚洲| 亚洲毛片在线观看| 亚洲自拍偷拍网址| 亚洲少妇最新在线视频| 一区二区三区四区五区视频| 亚洲欧美日韩精品一区二区| 久久久久久九九九九| 欧美另类久久久品| 国产精品最新自拍| 亚洲国产精品久久久久秋霞蜜臀 | 亚洲欧美日韩国产综合精品二区| 久久精品女人| 欧美日韩一区二区国产| 国自产拍偷拍福利精品免费一| 最近中文字幕日韩精品 | 欧美日韩小视频| 国产精品综合色区在线观看| 亚洲国产精品嫩草影院| 正在播放亚洲| 另类天堂视频在线观看| 亚洲最黄网站| 免费成人美女女| 国产免费亚洲高清| 99热在这里有精品免费| 久久久国产精品一区| 日韩天堂在线视频| 免费观看不卡av| 国产亚洲福利| 亚洲一二三区在线| 亚洲国产精品999| 午夜在线电影亚洲一区| 欧美剧在线免费观看网站| 激情六月婷婷久久| 欧美影视一区| 亚洲一区二区三区午夜| 欧美理论电影网| 亚洲精品美女久久久久| 免费观看国产成人| 欧美中文在线观看国产| 国产精品久久久久久久7电影 | 欧美精品网站| 亚洲国产精品一区二区第一页 | 久久亚洲捆绑美女| 午夜精品久久久久久久99黑人| 欧美日韩亚洲三区| 一区二区三区成人| 亚洲精品人人| 欧美人与禽猛交乱配| 99视频一区二区| 亚洲激情国产| 欧美电影免费观看高清完整版| 尤物网精品视频| 欧美mv日韩mv国产网站app| 久久久999| 91久久久一线二线三线品牌| 亚洲电影在线免费观看| 欧美成人中文字幕在线| 99国内精品久久| 亚洲免费播放| 国产精品你懂的在线| 久久国产精品一区二区| 久久久久国色av免费看影院| 在线欧美日韩精品| 亚洲国产91精品在线观看| 欧美人与禽猛交乱配| 亚洲欧美春色| 久久国产精品久久精品国产| 亚洲二区精品| 日韩午夜剧场| 欧美日韩国产a| 欧美一区二区三区在线观看| 欧美成人免费网| 99视频在线观看一区三区| 99国产精品| 国产欧美日韩中文字幕在线| 久久看片网站| 欧美大片va欧美在线播放| 亚洲伦理中文字幕| 夜夜嗨av一区二区三区网页| 国产精品一香蕉国产线看观看| 久久精品国产99| 欧美 日韩 国产在线| 亚洲专区免费| 久久夜精品va视频免费观看| 亚洲免费av片| 欧美一区亚洲一区| 亚洲日本理论电影| 亚洲免费在线观看视频| 91久久精品www人人做人人爽| 日韩视频一区二区三区在线播放| 国产欧美精品| 亚洲激情小视频| 国产一区二区三区久久 | 国内成人精品一区| 亚洲毛片在线看| 在线观看亚洲精品| 亚洲伊人一本大道中文字幕| 亚洲国产日韩欧美| 欧美亚洲一区二区在线观看| 99国产精品国产精品久久| 亚洲欧美一区二区三区久久 | 久久人人超碰| 欧美亚洲一区| 欧美三级精品| 亚洲国产欧美另类丝袜| 激情综合亚洲| 午夜日韩视频| 亚洲综合电影| 欧美日韩亚洲一区二区三区在线观看 | 久久精品夜色噜噜亚洲a∨| 欧美日韩第一区| 欧美激情一二三区| 韩日视频一区| 久久大综合网| 亚洲欧美日本视频在线观看| 欧美精品成人一区二区在线观看 | 欧美小视频在线| 中文日韩在线视频| 国产视频久久| 亚洲精品综合久久中文字幕| 狠狠干狠狠久久| 亚洲欧美日韩国产综合在线| 亚洲男人的天堂在线观看| 欧美日韩dvd在线观看| 欧美国产日韩xxxxx| 在线看片第一页欧美| 久久美女艺术照精彩视频福利播放| 欧美一区中文字幕| 国产亚洲精品久久久久动| 亚洲综合精品一区二区| 性8sex亚洲区入口| 国产欧美一区二区视频| 午夜精品国产| 欧美fxxxxxx另类| 亚洲精品在线一区二区| 欧美二区在线| 日韩一区二区精品葵司在线| 亚洲小视频在线| 国产精品看片资源| 欧美在线亚洲综合一区| 欧美a级片网站| 一区二区三区波多野结衣在线观看| 欧美视频你懂的| 午夜精品一区二区三区四区| 久久久国产亚洲精品| 亚洲黄色高清| 欧美性事免费在线观看| 先锋影音久久久| 久久一区二区三区四区| 精品成人乱色一区二区| 欧美激情精品久久久六区热门| 日韩视频免费在线观看| 亚洲欧美成aⅴ人在线观看| 国产精品免费观看视频| 久久精品在线免费观看| 亚洲人久久久| 久久精品一区二区三区不卡| 亚洲日本中文字幕免费在线不卡| 欧美日韩在线视频一区| 久久www成人_看片免费不卡| 亚洲激情影视| 久久久久9999亚洲精品| 亚洲人成77777在线观看网| 欧美视频在线免费看| 久久免费视频网站| 亚洲视频一区二区在线观看 | 亚洲国产精品一区制服丝袜 | 狂野欧美激情性xxxx| 一区二区三区|亚洲午夜| 国产欧美日韩一区二区三区| 免费日韩视频| 性欧美长视频| 一区二区欧美在线观看| 欧美va亚洲va国产综合| 性欧美1819性猛交| 日韩视频在线观看免费| 黄色日韩在线| 国产美女精品人人做人人爽| 欧美人与禽猛交乱配| 久久尤物电影视频在线观看| 亚洲一区精品电影| 99在线精品视频| 亚洲电影免费观看高清| 久久久亚洲影院你懂的| 欧美日韩国产三区| 一区二区欧美在线观看| 麻豆亚洲精品| 久久精品免费电影|