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

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運轉,開心的工作
簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

測試網絡程序

Posted on 2009-01-31 01:52 S.l.e!ep.¢% 閱讀(1382) 評論(0)  編輯 收藏 引用 所屬分類: test

// ?網絡通信協議
////////////////////////////////////////////////////////////////////////////// //
struct ?cmd
{
????
int ?nCmd;
}
;

#pragma?pack(
1 )
struct ?tagClientLogin
{
????cmd??header;
????
char ?username[ 20 ];
????
char ?userpwd[ 20 ];
}
;

struct ?tagRepClientLogin
{
????cmd??header;
????
bool ?bLoginSuccess;
}
;
#pragma?pack(
1 )

#define ?NETWORK_CMD_LOGIN?1
#define ?NETWORK_CMD_REP_LOGIN?2
////////////////////////////////////////////////////////////////////////////// //

// ?接口定義
////////////////////////////////////////////////////////////////////////////// //
class ?ClientObserver
{
public :
????ClientObserver()??
{}
????
~ ClientObserver()? {}

????
virtual ? void ?onRepLogin( bool ?bLoginSuccess)? = ? 0 ;
}
;

class ?INetWorkable
{
public :
????INetWorkable()?
{}
????
~ INetWorkable()? {}

????
// ?pvoid?:?欲發送的緩沖區;?nSize?:?緩沖區的大小
???? virtual ? bool ?send( const ? void * ?pvoid,? int ?nSize)? = ? 0 ;

????
// ?由網絡層調用,pvoid:?接收到的數據的緩沖區,?nSize?:?緩沖區的大小;??返回已經處理的數據長度
???? virtual ? int ?onreceive( const ? void * ?pvoid,? int ?nSize)? = ? 0 ;
}
;

class ?ILogable
{
public :
????ILogable()?
{}
????
~ ILogable()? {}

????
virtual ? void ?log( const ? char * ?plog)? = ? 0 ;
}
;
////////////////////////////////////////////////////////////////////////////// //

// ?業務邏輯類
////////////////////////////////////////////////////////////////////////////// //
class ?Client?:? public ?INetWorkable
{
public :
????Client();
????
virtual ? ~ Client();

????
void ?registerObserver(ClientObserver * ?p)? {?m_pClientObserver? = ?p;?}
????
void ?removeObserver()? {?m_pClientObserver? = ?NULL;?}

????
void ?setLoger(ILogable * ?p)? {?m_plog? = ?p;?}
????
void ?removeLoger()????????? {?m_plog? = ?NULL;?}

????
bool ?SendLogin( const ? char * ?name,? const ? char * ?pwd)
????
{
????????tagClientLogin?login;
????????memset(
& login,? 0 ,? sizeof (login));
????????login.header.nCmd?
= ?NETWORK_CMD_LOGIN;
????????strncpy(login.username,?name,?
sizeof (login.username));????????
????????strncpy(login.userpwd,?pwd,?
sizeof (login.userpwd));
????????
return ?send( & login,? sizeof (login));
????}


protected :
????
virtual ? bool ?send( const ? void * ?pvoid,? int ?nSize)
????
{
????????cout?
<< ? " Client?socket?send?size?=? " ? << ?nSize? << ?endl;
????????
return ? true ;
????}

????
????
virtual ? int ?onreceive( const ? void * ?pvoid,? int ?nSize)
????
{
????????
if ?(?nSize? < ? sizeof (cmd)?)
????????????
return ? 0 ;
????????
????????cmd
* ?pheader? = ?(cmd * )pvoid;
????????
????????
if ?(?pheader -> nCmd? == ?NETWORK_CMD_REP_LOGIN?)
????????
{
????????????
if ?(?nSize? < ? sizeof (tagRepClientLogin)?)
????????????????
return ? 0 ;
????????????
????????????tagRepClientLogin
* ?ptagRepClientLogin? = ?(tagRepClientLogin * )pvoid;
????????????
????????????
if ?(?m_pClientObserver? != ?NULL?)
????????????????m_pClientObserver
-> onRepLogin(ptagRepClientLogin -> bLoginSuccess);
????????????
????????????
return ? sizeof (tagRepClientLogin);????
????????}

????????
????????
return ? 0 ;
????}


private :
????ClientObserver
* ?m_pClientObserver;
????ILogable
* ???????m_plog;
}
;

下面是測試的代碼
#include?"client.h"
#include?
<string.h>

class?testClient?:?public?Client
{
public:
????testClient()??
{}
????
~testClient()?{}

????
virtual?bool?send(const?void*?pvoid,?int?nSize)
????
{
????????memcpy(m_buf,?pvoid,?nSize);
????????
return?true;
????}


????
int?NetWorkReceive(const?void*?pvoid,?int?nSize)
????
{
????????
return?onreceive(pvoid,?nSize);
????}


????
bool?cmpMemory(const?void*?pvoid,?int?nSize)
????
{
????????
return?(?0?==?memcmp(m_buf,?pvoid,?nSize)?);
????}

????
private:
????
char?m_buf[1024];
}
;

int?main()
{
????testClient?test;
????test.SendLogin(
"test_username",?"test_pwd");

????tagClientLogin?clientlogin;
????memset(
&clientlogin,?0,?sizeof(clientlogin));
????clientlogin.header.nCmd?
=?NETWORK_CMD_LOGIN;
????strcpy(clientlogin.username,?
"test_username");
????strcpy(clientlogin.userpwd,??
"test_pwd");
????
if(?!test.cmpMemory(&clientlogin,?sizeof(clientlogin))?)
????????cout?
<<?"test?failed"?<<?endl;
????
????
char?szBuf[1024]??=?{0};

????
//?摸擬服務器發送的包長度不足
????if(?0?!=?test.NetWorkReceive(szBuf,?sizeof(tagRepClientLogin)?-?10)?)
????????cout?
<<?"test?failed"?<<?endl;

????
//?摸擬服務器發送的包內容非法
????if(?0?!=?test.NetWorkReceive(szBuf,?sizeof(tagRepClientLogin))?)
????????cout?
<<?"test?failed"?<<?endl;

????tagRepClientLogin?repLogin;
????repLogin.header.nCmd?
=?NETWORK_CMD_REP_LOGIN;
????memcpy(szBuf,?
&repLogin,?sizeof(repLogin));

????
//?摸擬服務器發送了正確的包
????if(?sizeof(tagRepClientLogin)?!=?test.NetWorkReceive(szBuf,?sizeof(tagRepClientLogin))?)
????????cout?
<<?"test?failed"?<<?endl;
????
????
return?0;
}
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            牛牛国产精品| 亚洲一本视频| 国产日韩一区在线| 国产精品久久久久久久久动漫| 午夜亚洲一区| 亚洲一卡久久| 一区二区欧美激情| 一区二区三区高清不卡| 欧美3dxxxxhd| 亚洲电影免费观看高清完整版在线观看| 一区二区三区四区在线| 亚洲最新视频在线播放| 一区二区三区欧美成人| 亚洲桃花岛网站| 欧美一区二区成人| 久久婷婷麻豆| 99天天综合性| 亚洲综合国产| 久久亚洲视频| 国产精品爽爽ⅴa在线观看| 国产亚洲日本欧美韩国| 亚洲人成网站在线观看播放| 小黄鸭精品密入口导航| 亚洲第一偷拍| 久久久999精品| 国产精品青草综合久久久久99| 国产在线观看一区| 亚洲一区二区三区在线视频| 久久永久免费| 久久都是精品| 国产日韩精品在线| 亚洲少妇在线| 亚洲美女尤物影院| 欧美日韩国产在线| 久久精品视频在线| 欧美视频在线观看一区二区| 国内精品伊人久久久久av影院 | 亚洲一区二区三区四区五区午夜 | 最近中文字幕日韩精品 | 韩国一区二区三区在线观看 | 亚洲成人中文| 久久久久综合网| 亚洲欧美日韩第一区| 国产精品一级二级三级| 羞羞答答国产精品www一本 | 欧美91视频| 久久激情综合| 怡红院av一区二区三区| 麻豆精品传媒视频| 欧美成年人视频网站欧美| 亚洲免费福利视频| 日韩午夜在线| 国产亚洲一区二区三区在线播放 | 国产午夜亚洲精品不卡| 欧美国产精品v| 性欧美8khd高清极品| 亚洲国产片色| 欧美中文字幕视频| 欧美午夜在线观看| 久久综合99re88久久爱| 欧美日本一道本| 亚洲精品久久久一区二区三区| 亚洲毛片在线| 欧美中文字幕在线播放| 一区二区高清在线观看| 久久嫩草精品久久久精品| 亚洲一区二区黄色| 免费观看成人鲁鲁鲁鲁鲁视频 | 欧美精品九九| 美乳少妇欧美精品| 国产欧美视频在线观看| 亚洲一区二区三区四区五区午夜| 亚洲日本成人女熟在线观看| 久久国产精品一区二区三区| 亚洲女女女同性video| 欧美视频中文在线看| 91久久精品视频| 9人人澡人人爽人人精品| 久久米奇亚洲| 久热国产精品| 国产一区二区成人| 欧美aⅴ一区二区三区视频| 一本色道综合亚洲| 国产一区二区三区高清在线观看| 亚洲一区二区三区久久| 久久精品盗摄| 亚洲电影在线| 欧美黄色片免费观看| 亚洲人www| 久久成人精品视频| 亚洲激情校园春色| 国产精品日韩欧美一区二区| 欧美性感一类影片在线播放| 日韩午夜黄色| 久久网站免费| 亚洲一区二区三区免费视频| 韩国一区电影| 国产麻豆午夜三级精品| 欧美日韩国产首页在线观看| 久久爱www.| 亚洲国产精品视频一区| 欧美一区二区三区四区在线观看地址| 亚洲国产一区二区三区a毛片| 国产欧美高清| 欧美日韩免费看| 欧美日韩精品欧美日韩精品一| 亚洲欧洲av一区二区| 亚洲高清不卡在线观看| 嫩草国产精品入口| 久久综合给合| 久久综合伊人77777麻豆| 久久久久在线观看| 亚洲精选大片| 久久精品欧美日韩| 欧美性猛交99久久久久99按摩 | 久久都是精品| 亚洲一区二区三区在线看| 日韩网站在线看片你懂的| 在线亚洲精品| 久久久久国产精品一区三寸| 日韩网站在线观看| 亚洲精品在线电影| 亚洲在线黄色| 久久精品91| 每日更新成人在线视频| 免费人成网站在线观看欧美高清| 欧美激情在线观看| 国产精品自拍在线| 亚洲人成人99网站| 久久久综合香蕉尹人综合网| 欧美紧缚bdsm在线视频| 亚洲精品之草原avav久久| 亚洲美女电影在线| 欧美在线视频日韩| 99这里只有精品| 亚洲视频图片小说| 久久久午夜电影| 亚洲无玛一区| 国产精品久久久久久久一区探花| 日韩视频在线观看免费| 最新成人av网站| 欧美激情视频一区二区三区不卡| 亚洲国产毛片完整版| 欧美激情aⅴ一区二区三区| 久久一区免费| 亚洲精品看片| 亚洲资源在线观看| 国产欧美日韩综合| 欧美日韩国产二区| 午夜精品久久久久久久99热浪潮| 欧美激情第8页| 久久精品91久久久久久再现| 一区二区三区国产精品| 一区二区三区高清不卡| 亚洲国产成人不卡| 亚洲国产日本| 午夜国产欧美理论在线播放| 亚洲午夜国产一区99re久久 | 亚洲国产精品美女| 欧美成人一区二区三区片免费| 久久午夜电影网| 亚洲乱码国产乱码精品精98午夜| 一区二区三区蜜桃网| 麻豆精品在线播放| 欧美色区777第一页| 伊人久久亚洲热| 亚洲国产精品成人va在线观看| 亚洲欧洲精品成人久久奇米网 | 久久久久成人网| 亚洲高清视频一区二区| 久久狠狠婷婷| 欧美黄色免费| 亚洲伊人第一页| 欧美一级久久久| 猫咪成人在线观看| 性一交一乱一区二区洋洋av| 欧美一级午夜免费电影| 久久综合一区| 亚洲国产精品999| 中文一区字幕| 欧美三级午夜理伦三级中视频| 极品尤物久久久av免费看| 午夜精品理论片| 一本一道久久综合狠狠老精东影业| 亚洲女ⅴideoshd黑人| 欧美人在线视频| 久久免费高清视频| 亚洲国产91| 国产精品日韩在线观看| 欧美一级片一区| 在线精品观看| 国产精品久久久999| 久久综合伊人77777蜜臀| 在线综合亚洲| 亚洲三级电影在线观看| 久久精品国产久精国产思思| 在线综合亚洲| 亚洲国产va精品久久久不卡综合| 国产精品任我爽爆在线播放| 欧美大片第1页|