使用BlackBerry Transcoder API集成第三方加密方案(二)
来源:互联网 发布:淘宝怎么注册小号 编辑:程序博客网 时间:2024/05/20 14:24
作者: 邓明轩
创建服务器端程序
如以上章节所述,服务器端的加解密程序是以 dll 形式部署的,所以,要开发服务器端加解 密程序需要一个可以将 c 语言代码编译成 dll 的工具。为了方便,本例使用 Visual C++ 6.0 作 为开发工具,读者可以根据自己的习惯选用其它类似工具。
启动 Visual C++ 6.0,点击“File -> New”以创建一个新的项目,如下图:
栏 中 输 入 项目 名 , 本例为 “ MyTranscoder ”, 同时 指 定 项 目所 在 的 文件目 录 , 本 例使 用
“c:/workspace/vc6/MyTranscoder”作为项目所在的文件目录。保持其它选项,点击“OK”, 系统将创建一个名为 MyTranscoder 的项目,同时创建对应的 workspace。示意图如下:
在项目创建过程中向导会提示需要创建什么类型的 dll 项目,为了代码编写方便,我们选择
“A simple Dll project”,就是创建一个简单的 dll 项目,由系统生成一些基本的文件。选择后 点击“Finish”
向导结束后系统会出现提示框以确认项目的细节,点击“OK”关闭这个确认框。
MyTranscoder 项目创建以后可以发现项目中有一些系统生成的文件,包括 StdAfx.h,StdAfx.cpp
和 MyTranscoder.cpp。我们需要编辑的是 MyTranscoder.cpp,在这里完成 Transcoder API 的实 现。双击左边导航条中的“MyTranscoder.cpp”文件以打开该文件,可以看到系统生成了 DllMain 方法,这个方法是 dll 的入口方法,所以系统自动生成了该方法。如下图:
因为我们在项目中要使用 Transcoder API,所以下一步工作就是将 Transcoder API 提供的头文
件“BESTranscoderAPI.h”引入到项目中。“BESTranscoderAPI.h”文件随文档提供,读者也可 以在 BlackBerry 官方网站上下载。获取到“BESTranscoderAPI.h”文件后,在操作系统上将这 个文件拷贝到项目目录中,本例就是“C:/workspace/vc6/MyTranscoder”目录。然后,在 Visual C++ 6.0 界面中左边导航条中选择“Header Files”,点击右键,选择“Add Files to Folder…”, 然后选择刚拷贝的“BESTranscoderAPI.h”,这样就可以将头文件“BESTranscoderAPI.h”引入 到当前项目中。
引入头文件“BESTranscoderAPI.h”后结果如下图,有兴趣的读者可以双击该文件打开它, 了解一下头文件“BESTranscoderAPI.h”中所定义的方法。
引入头文件“BESTranscoderAPI.h”后,在左边导航条中双击“MyTranscoder.cpp”文件,编
辑 MyTranscoder.cpp 文件,使该文件的内容和似下代码相同。读者为了方便,可以将系统生 成的代码行删除,直接将以下代码粘贴到 MyTranscoder.cpp 文件中:
// MyTranscoder.cpp : Defines the entry point for the DLL application.
#include "stdafx.h"
#include "BESTranscoderAPI.h"
#include <iostream>
FILE * logFile;
char LogFileName[64]="c://Transcoder//Transcoder-Log.txt";
DEFINE_BES_TRANSCODER_DLL
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call, LPVOID lpReserved
)
{
printf("Loading Dll");
return TRUE;
}
__declspec (dllexport)
int __cdecl LoadDLL()
{
logFile = fopen(LogFileName, "a");
fprintf(logFile,"trying to call LoadDll");
return 0;
}
__declspec (dllexport)
void __cdecl FreeDLL()
{
fprintf(logFile,"Dll free");
}
__declspec (dllexport)
unsigned char __cdecl GetID()
{
unsigned long TranscoderID=20;
fprintf(logFile,"trying to get ID");
return (unsigned char) TranscoderID;
}
__declspec (dllexport)
int __cdecl WillTranscode( const TranscoderContext *const context )
{
return 0;
}
__declspec (dllexport)
int __cdecl Encode( TranscoderInputStream *const input, TranscoderOutputStream *const output, const TranscoderContext *const context )
{
fprintf(logFile,"testing encode is running now");
unsigned char readC;
fprintf(logFile," /nencode read char:");
while (input->Read(&readC))
{
fprintf(logFile,"%c",readC);
output->Write(readC);
}
return 0;
}
__declspec (dllexport)
int __cdecl Decode( TranscoderInputStream *const input, TranscoderOutputStream *const output, const TranscoderContext *const context )
{
fprintf(logFile," /ndecode read char:");
unsigned char readC;
while (input->Read(&readC))
{
fprintf(logFile,"%c",readC);
output->Write(readC);
}
return 0;
}
编辑代码后结果如下图:
最后,点击“Build->Build MyTranscoder.dll”菜单生成 dll 文件。使用 Visual C++ 6.0 的标准设
置 的 话 , 所 生 成 的 dll 文 件 可 以 在 项 目 的 Debug 目 录 中 找 到 , 本 例 就 是
c:/workspace/vc6/MyTranscoder/Debug 目录。
BlackBerry SDK下载
相关链接:
使用BlackBerry Transcoder API集成第三方加密方案(一)
使用BlackBerry Transcoder API集成第三方加密方案(二)
使用BlackBerry Transcoder API集成第三方加密方案(三)
- 使用BlackBerry Transcoder API集成第三方加密方案(二)
- 使用BlackBerry Transcoder API集成第三方加密方案(一)
- 使用BlackBerry Transcoder API集成第三方加密方案(三)
- 第三方API使用方案
- Android使用官方API分享内容到QQ和微信(非第三方集成)
- Blackberry 上如何使用第三方 Library (jar)
- 毕业设计使用第三方api
- 支付宝的集成与使用(第三方)
- iOS集成第三方登录的使用
- BlackBerry PlayBook上的设备集成(二)
- 教你如何自己制作IP地址查询的API,摆脱第三方API---(二)
- 即时通信(集成第三方)
- 集成通讯录(第三方框架RHAddressBook)
- 第三方支付集成
- 第三方支付集成
- 第三方登录(二)
- Cocos2d-Lua(Quick-Cocos2d-x)集成第三方SDK(二)
- 第三方登录之QQ登录集成(二)
- “三星手机bada系统开发者推介会”为您启动创业梦
- windowxp用vpn方式连接上远程主机后,不能上网了的解决方法
- Linux USB驱动框架分析
- Zend_Framwwork生成验证码
- C#修该web.config文件中的配置项
- 使用BlackBerry Transcoder API集成第三方加密方案(二)
- 海量数据处理分析总结
- 那些配置问题
- (转)Android 中自定义 Menu 资源
- 如何用美剧真正提升你的英语水平
- linux系统入侵留后门方法+日志清除
- linux系统入侵留后门方法+日志清除
- UML类图关系
- 高通CAMIF和OV sensor调试经验分享(转)