作者: 邓明轩
创建服务器端 程序
如以上 章节 所述 ,服 务器 端的加 解密 程序是 以 dll 形 式部署 的, 所以 ,要 开发 服务器 端加 解 密程序 需要 一个 可以 将 c 语言代 码编译 成 dll 的 工具。为 了方便,本 例使 用 Vis ua l C++ 6 .0 作 为开发 工具 ,读 者可 以根 据自己 的习 惯选 用其 它类 似工具 。
启动 Vis ua l C + + 6 .0 ,点击 “ F il e -> N ew ”以 创建 一个 新的项 目, 如下 图:
|
栏 中 输 入 项 目 名 , 本例 为 “ My T r ans c o der ” , 同 时 指 定 项 目 所 在 的 文件 目 录 , 本 例 使 用
“ c : /w o rk s pa ce/v c 6 /My T r an s c o der ”作为 项目所 在的 文件目录 。保 持其它 选项 ,点击“ O K ”, 系统将 创建 一个名 为 My T r ans c o der 的 项目 ,同 时创 建对应 的 w o rk s pa ce 。示意 图如下 :
在项目 创建 过程 中向 导会 提示需 要创 建什 么类型 的 dll 项目, 为了 代码 编写方 便,我 们选 择
“ A sim pl e Dl l p r o ject ” , 就 是创建 一个 简单 的 dll 项目 , 由 系统 生成 一些 基本的 文件 。 选 择后 点击“ F in ish ”
向导结 束后 系统 会出 现提 示框以 确认 项目 的细 节, 点击“ O K ”关 闭这 个确认 框。
MyT r ans c o der 项 目创 建以 后可以 发现 项目 中有 一些 系统生 成的 文件 , 包 括 S t dAfx. h,S t dAfx. cp p
和 My T r ans c o de r .cp p 。 我们 需要编 辑的 是 M yT r ans c o de r .c pp , 在 这里 完成 T r a ns c o der AP I 的实 现。双击左 边 导航条 中的 “ My T r ans c o der .c pp ”文 件 以打开该文 件 ,可以 看到 系统生成 了 Dl lM ai n 方法 ,这 个方 法是 dll 的入口 方法 ,所 以系统 自动生 成了 该方 法。 如下 图:
因为我 们在 项目 中要使 用 T r ans c o der AP I , 所以 下一步 工作就是 将 T r ans c o der AP I 提供的 头文
件“ BE S T r ans c o de rAP I. h ” 引入到 项目 中。 “ BE S T r ans c o derAP I. h ”文 件随 文档提 供, 读者 也可 以在 Bla ck B er r y 官 方网站 上下载 。 获取 到 “ BE S T r an sc o derAP I. h ” 文件后 , 在操 作系统 上将 这 个文件 拷贝 到项 目目 录中 , 本例就 是 “ C : /w o rk s pa ce /v c 6 /My T r ans c o der ” 目录 。 然 后, 在 Vis ua l C++ 6 .0 界面 中左 边导 航条 中选择 “ H eade r F il es ” ,点 击右键 ,选 择“ Add F il es t o F o ld er… ”, 然后选 择刚 拷贝 的 “ BE S T r a ns c o derAP I. h ” , 这 样就可 以将头 文件 “ BE S T r ans c o derAP I. h ” 引 入 到当前 项目 中。
引入头文件“ BE S T r ans c o de rAP I. h ”后结果如下图, 有兴趣的读者可以双击该 文件打开 它 , 了解一 下头 文件 “ BE S T r an sc o derAP I. h ” 中所 定义 的方 法。
引入头文件“ BE S T r ans c o de rAP I. h ”后,在左边导 航条 中双击“ My T r ans c o de r .c pp ”文件,编
辑 My T r ans c o de r .c pp 文件 , 使该 文件 的内 容和 似下 代码相 同。 读者 为了 方便 , 可以 将系 统生 成的代 码行 删除 ,直 接将 以下代 码粘贴 到 My T r ans co der .c pp 文 件中 :
// My T r ans c o de r .c pp : De fin es t he en t ry po in t f o r t he DL L app li ca t io n.
#in cl ud e " s t da fx.h "
#in cl ud e " BE S T r ans c o der AP I. h"
#in cl ud e <io s t r eam >
F ILE * logF il e;
ch ar LogF il eN am e[ 6 4 ]="c :// T r ans c o der // T r ans c o de r -Log . t xt" ;
DEF INE_ BE S _T RA NSC OD E R_ DLL
BOO L AP IE NTR Y Dll Ma in ( HA NDLE h Mo du le,
DW ORD ul _ r easo n_f o r _c al l, LP V OI D lp R ese r v ed
)
{
prin t f( " Lo ad in g Dl l" ) ;
r et urn T RU E ;
}
__ decls pec ( dl l e xpo rt )
in t __cdec l Lo ad D LL( )
{
logF il e = f o pen( Log Fil eN am e , "a" ) ;
fprin t f( logF il e,"t ryin g t o c al l Lo ad Dl l" ) ;
r et urn 0 ;
}
__ decls pec ( dl l e xpo rt )
v o id __cd ecl F r ee DL L( )
{
fprin t f( logF il e,"Dl l fre e") ;
}
__ decls pec ( dl l e xpo rt )
uns ig ned c ha r __ cd ecl G et ID ( )
{
uns ig ned lo ng T r ans c o de rID =2 0 ;
fprin t f( logF il e,"t ryin g t o g et I D" ) ;
r et urn ( uns ig ned c ha r ) T r ans c o de rID ;
}
__ decls pec ( dl l e xpo rt )
in t __cdec l W il l T r ans c o de( c o ns t T r ans c o derCo n t e xt *c o ns t c o n t e xt )
{
r et urn 0 ;
}
__ decls pec ( dl l e xpo rt )
in t __cdec l En c o de ( T r ans co derIn putSt r eam *c o ns t in put , T r a ns c o derOut putSt r eam *c o ns t o ut put , c o ns t T r ans c o der Co n t e xt *c o ns t c o n t e xt )
{
fprin t f( logF il e,"t es t in g enc o de is r un ni ng no w") ;
uns ig ned c ha r r ead C;
fprin t f( logF il e," /n enc o de r ead ch ar : " ) ;
whi le ( in put - >R ead ( & r ead C) )
{
fprin t f( logF il e,"%c" ,r ea dC) ;
o ut put ->W rit e( r eadC ) ;
}
r et urn 0 ;
}
__ decls pec ( dl l e xpo rt )
in t __cdec l D ec o de( T r ans c o derIn putSt r eam *c o ns t in put , T r a ns c o derOut putSt r eam *c o ns t o ut put , c o ns t T r ans c o der Co n t e xt *c o ns t c o n t e xt )
{
fprin t f( logF il e," /n dec o de r ead c ha r : " ) ;
uns ig ned c ha r r ead C;
whi le ( in put - >R ead ( & r ead C) )
{
fprin t f( logF il e,"%c" ,r ea dC) ;
o ut put ->W rit e( r eadC ) ;
}
r et urn 0 ;
}
编辑代 码后 结果 如下 图:
最后 , 点 击 “ Bui ld - >Bui ld MyT r ans c o der .d ll ” 菜单生 成 dll 文 件。 使 用 Vis ua l C ++ 6 . 0 的 标准 设
置 的 话 , 所 生 成 的 dll 文 件 可 以 在 项 目 的 Debu g 目 录 中 找 到 , 本 例 就 是
c : /w o rk s pa c e /v c6/ My T r ans c o der /D ebug 目 录。
|
BlackBerry SDK下载
相关链接:
使用BlackBerry Transcoder API 集成第三方加密方案(一)
使用BlackBerry Transcoder API 集成第三方加密方案(二)
使用BlackBerry Transcoder API 集成第三方加密方案(三)