服务端为custom.dll提供的接口
api_OutInfo 在服务端控制台界面输出信息 |
C++接口原型 |
void api_OutInfo(char * szFormat, ...) |
szFormat |
文本格式,所以printf支持的本参数都支持 |
... |
可重复添加参数 |
返回值 |
无 void |
易接口 |
子程序名 |
返回值类型 |
公开 |
备注 |
api_OutInfo |
|
√
|
输出信息到服务端控制台显示 |
参数名 |
类型 |
参考 |
可空 |
数组 |
备注 |
szFormat |
文本型 |
√
|
|
|
"%s%d" |
param2 |
整数型 |
|
√
|
|
文本的话请用取_文本指针(文本) |
param3 |
整数型 |
|
√
|
|
同上 |
param4 |
整数型 |
|
√
|
|
同上 |
param5 |
整数型 |
|
√
|
|
同上 |
param6 |
整数型 |
|
√
|
|
同上 |
param7 |
整数型 |
|
√
|
|
同上 |
param8 |
整数型 |
|
√
|
|
同上 |
param9 |
整数型 |
|
√
|
|
同上 |
|
说明 |
打印信息到控制台屏幕
C++
api_OutInfo("data:%s,%d", "aaaaa", 123123)
易语言输出文本参数要写 取文本指针("asfsafd")
eg: api_OutInfo("data:%s,%d", _取文本指针("aaaaa"), 123123) |
api_allocByTask 申请任务返回内存 |
C++接口原型 |
void* api_allocByTask(const unsigned long _taskId, int _BufSize) |
_taskId |
要返回数据的任务ID |
_BufSize |
需要返回数据的字节数,可比要返回的数据稍大,不用太精准,但一定不能小 |
返回值 |
成功返回申请到的内存指针,失败返回NULL,该内存指针归主程序管理释放 |
|
子程序名 |
返回值类型 |
公开 |
备注 |
api_allocByTask |
整数型 |
√
|
专用于返回处理结果的内存申请 |
参数名 |
类型 |
参考 |
可空 |
数组 |
备注 |
任务ID |
整数型 |
|
|
|
|
申请内存大小 |
整数型 |
|
|
|
|
|
说明 |
申请专用返回内存,该内存主程序管理,每个函数只可调用一次
自定义加密函数或自定义接口函数处理完数据,将要返回的数据写入该内存 写入的数据只能是文本, 结尾必须是\x00
|
api_Query 执行SQL语句,一般是update,insert,delete |
C++接口原型 |
int api_Query(const char * v_sqlstr) |
v_sqlstr |
SQL语句,通常是 update insert delete 之类的,语句中有中文或其它非asc字符时必须转成utf-8格式 |
返回值 |
失败返回-1,成功返回>=0,大于0表示的是该操作影响的数据行数 |
易接口 |
子程序名 |
返回值类型 |
公开 |
备注 |
api_Query |
整数型 |
√
|
Mysql执行query语句 例如update delete insert。失败返回-1,成功返回0 或 大于0表示影响的行数 |
参数名 |
类型 |
参考 |
可空 |
数组 |
备注 |
SQL语句_utf8 |
文本型 |
√
|
|
|
需要utf8格式,非utf8格式,请先ansi_utf8,如果全是ascii的半角字符无需转换utf8 |
|
说明 |
执行SQL语句 api_Query("update set abc=1 from table where id=1") |
api_GetRow 执行mysql的select查询,只返回首行数据 |
C++接口原型 |
DataRow* api_GetRow(const char * v_sqlstr) |
v_sqlstr |
SQL语句,通常是select 之类的,语句中有中文或其它非asc字符时必须转成utf-8格式 |
返回值 |
只返回首行数据,失败返回NULL,注意如果返回指针不为NULL,用完数据一定要第一时间调用 api_Recovery(指针) 释放 |
易接口 |
子程序名 |
返回值类型 |
公开 |
备注 |
api_GetRow |
整数型 |
√
|
mysql执行select语句,只返回一条记录。无记录返回0,有记录返回的是一个1维数组的原始指针,用完该指针需调用api_Recovery释放 |
参数名 |
类型 |
参考 |
可空 |
数组 |
备注 |
SQL语句_utf8 |
文本型 |
√
|
|
|
需要utf8格式,非utf8格式,请先ansi_utf8,如果全是ascii的半角字符无需转换utf8 |
|
说明 |
struct DataRow
{
int eArrDimension; //固定值1,表示一维数组,兼容易语言写法
int cols; //列数,也就是字段数
char* m_data[MAX_MYSQL_FILELD_NUM]; //保存每列的数据指针
char* operator[](int idx) const
{
return m_data[idx];
}
}
易语言直接把这个当指针绑定到数组就可以直接用数组的形式访问
C++先建立一个DataRow变量引用指针,然后用操作符[]访问即可
DataRow* p=api_GetRow("select id,name from *** where *** limit 0,1");
DataRow rs&=*p;
rs[0] rs[1] 这样访问 id和name
然后通过下标即可访问,详情请拿custom.dll源码查看
|
api_GetRows 执行mysql的select查询,可返回多行数据 |
C++接口原型 |
DataRows* api_GetRows(const char * v_sqlstr) |
v_sqlstr |
SQL语句,通常是select 之类的,语句中有中文或其它非asc字符时必须转成utf-8格式 |
返回值 指针 |
返回多行数据指针,失败返回NULL,注意如果返回指针不为NULL,用完数据一定要第一时间调用 api_Recovery(指针) 释放 |
易接口 |
子程序名 |
返回值类型 |
公开 |
备注 |
api_GetRows |
整数型 |
√
|
mysql执行select语句,最多能返回20条记录。无记录返回0,有记录返回的是一个2维数组的原始指针,用完该指针需调用api_Recovery释放 |
参数名 |
类型 |
参考 |
可空 |
数组 |
备注 |
SQL语句_utf8 |
文本型 |
√
|
|
|
需要utf8格式,非utf8格式,请先ansi_utf8,如果全是ascii的半角字符无需转换utf8 |
|
说明 |
struct DataRows
{
int eArrDimension; //固定值2,兼容易二维数组
int rows; //一维,查询到的行数
int cols; //二维,列数,也就是字段数
char* m_data[MAX_MYSQL_FILELD_NUM]; //保存每行每列的数据指针,实际上是 char* m_data[rows][cols] 看[]操作符算法就知道
char* operator[](int idx) const
{
return return (char* *)(m_data + cols * idy);;
}
}
易语言直接把这个当指针绑定到数组就可以直接用数组的形式访问
C++先建立一个DataRow变量引用指针,然后用操作符[]访问即可
DataRow* p=api_GetRow("select id,name from *** where *** limit 0,1");
DataRow rs&=*p;
rs[0] rs[1] 这样访问 id和name
然后通过下标即可访问,详情请拿custom.dll源码查看
|
api_Recovery 释放mysql查询的数据指针 |
C++接口原型 |
void api_Recovery(void * p) |
p |
api_GetRow或api_GetRows返的指针 |
返回值 |
无 void |
易接口 |
子程序名 |
返回值类型 |
公开 |
备注 |
api_Recovery |
|
√
|
释放api_GetRow或api_GetRows查询的指针内存 |
参数名 |
类型 |
参考 |
可空 |
数组 |
备注 |
指针 |
整数型 |
|
|
|
api_GetRow或api_GetRows返回的指针 |
|
说明 |
释放 api_GetRow或api_GetRows 查询占用的mysql资源,并将mysql连接放回mysql连接池 |
api_GetRsaKeyPtr 由RSA文本制造一个RSA加解密用的指针 |
C++接口原型 |
void* api_GetRsaKeyPtr(const char* _Rsa_private_PKCS1) |
_Rsa_private_PKCS1 |
PKCS1格式的RSA私钥文本,每行尾必须用换行符 |
返回值 |
返回RSA加解密需要用到的RSA指针,该指针归主程序内部管理,无需释放(内部有链表,同一个文本返回的指针是相同的) |
易接口 |
子程序名 |
返回值类型 |
公开 |
备注 |
api_GetRsaKeyPtr |
整数型 |
√
|
返回rsa结构体指针 |
参数名 |
类型 |
参考 |
可空 |
数组 |
备注 |
_pemprvkey |
文本型 |
√
|
|
|
|
|
说明 |
C++
char a[]="-----BEGIN RSA PRIVATE KEY-----\n\
MIIBOwIBAAJBAJzUnshQs135oE67P9r9RLFKfFxaQoJOGOLbGTiTVilKBDRyah4I\n\ fZna6cza5HAJtQIhAJJAxVS5JVkM/XApP/tjF7X8HRk+jJlrWW3QZ6/s5VvBAiB9\n\
te1QG+rQ9lylNhVe12NVxywMktutdlBquQPz+8+AMg==\n\
-----END RSA PRIVATE KEY-----";
易
.版本 2
rsakey = “-----BEGIN RSA PRIVATE KEY-----” + 字符 (10)
rsakey = rsakey + “MIIBOwIBAAJBAJzUnshQs135oE67P9r9RLFKfFxaQoJOGOLbGTiTVilKBDRyah4I” + 字符 (10)
rsakey = rsakey + “fZna6cza5HAJtQIhAJJAxVS5JVkM/XApP/tjF7X8HRk+jJlrWW3QZ6/s5VvBAiB9” + 字符 (10)
rsakey = rsakey + “te1QG+rQ9lylNhVe12NVxywMktutdlBquQPz+8+AMg==” + 字符 (10)
rsakey = rsakey + “-----END RSA PRIVATE KEY-----”
|
api_RsaEncrypt RSA加密 |
C++接口原型 |
int api_RsaEncrypt(const void* RsaNodePtr, const char* _inBuf, const int _inCount, char * outBuf) |
RsaNodePtr |
RSA指针,api_GetRsaKeyPtr申请到的 |
_inBuf |
待RSA加密的文本或数据,要加密的数据长度不能大于 RSA位数/8 -4 (512位RSA可加密60字节的文本) |
_inCount |
待RSA加密的文本或数据长度 |
outBuf |
加密后的输出缓存,需提前申请数据空间,加密后的数据已自动Base64_Encode处理 |
返回值 |
加密后的文本长度 |
易接口 |
子程序名 |
返回值类型 |
公开 |
备注 |
api_RsaEncrypt |
整数型 |
√
|
RSA加密数据 |
参数名 |
类型 |
参考 |
可空 |
数组 |
备注 |
rsakey指针 |
整数型 |
|
|
|
|
待加密字节集 |
字节集 |
√
|
|
|
|
待加密字节集长度 |
整数型 |
|
|
|
|
加密结果存放缓存指针 |
整数型 |
|
|
|
需提前申请数据空间 |
|
说明 |
RSA标准加密, add_PKCS1_padding ->powm->base64encode |
api_RsaDecrypt RSA解密 |
C++接口原型 |
int api_RsaDecrypt(const void* RsaNodePtr, const char* _inBuf, const int _inCount, char * outBuf) |
RsaNodePtr |
RSA指针,api_GetRsaKeyPtr申请到的 |
_inBuf |
待RSA解密的文本或数据 |
_inCount |
待解密的文本或数据长度,可填0 |
outBuf |
解密后的输出缓存,需提前申请数据空间 |
返回值 |
解密后的文本或数据长度 |
易接口 |
子程序名 |
返回值类型 |
公开 |
备注 |
api_RsaDecrypt |
整数型 |
√
|
RSA解密数据 |
参数名 |
类型 |
参考 |
可空 |
数组 |
备注 |
rsakey指针 |
整数型 |
|
|
|
|
待解密字节集 |
字节集 |
√
|
|
|
|
待解密字节集长度 |
整数型 |
|
|
|
|
解密结果存放缓存指针 |
整数型 |
|
|
|
需提前申请数据空间 |
|
说明 |
|
api_Base64Encode 标准BASE64Encode |
C++接口原型 |
int api_Base64Encode(const char* _inBuf, const int _inCount, char* _outBuf) |
_inBuf |
待Base64编码的文本或数据 |
_inCount |
待Base64编码的文本或数据长度 |
_outBuf |
Base64编码结果存放缓存,需提前申请数据空间 |
返回值 |
编码后的数据长度 |
易接口 |
子程序名 |
返回值类型 |
公开 |
备注 |
api_Base64Encode |
整数型 |
√
|
Base64Encode |
参数名 |
类型 |
参考 |
可空 |
数组 |
备注 |
待编码数据指针 |
整数型 |
|
|
|
|
待编码数据长度 |
整数型 |
|
|
|
|
编码结果存放缓存指针 |
整数型 |
|
|
|
需提前申请数据空间 |
|
说明 |
标准Base64编码 |
api_Base64Decode 标准BASE64Decode |
C++接口原型 |
int api_Base64Decode(const char* _inBuf, const int _inCount, char* _outBuf) |
_inBuf |
待Base64解码的文本 |
_inCount |
待Base64解码的文本长度,可填0 |
_outBuf |
Base64解码结果存放缓存,需提前申请数据空间 |
返回值 |
解码后的数据长度 |
易接口 |
子程序名 |
返回值类型 |
公开 |
备注 |
api_Base64Decode |
整数型 |
√
|
Base64Decode |
参数名 |
类型 |
参考 |
可空 |
数组 |
备注 |
待解码文本 |
文本型 |
√
|
|
|
|
待解码文本长度 |
整数型 |
|
|
|
|
解码结果存放缓存指针 |
整数型 |
|
|
|
需提前申请数据空间 |
|
说明 |
标准Base64解码 |
api_RC4 标准RC4算法 |
C++接口原型 |
void api_RC4(const char* _key, const void* _data, const int data_length, char* _outBuf) |
_key |
RC4加密用到的key |
_data |
要RC4加密的文本或数据指针 |
data_length |
要RC4加密的文本或数据长度 |
_outBuf |
RC4加密结果存放的缓存,需提前申请数据空间 |
返回值 |
无 void |
易接口 |
子程序名 |
返回值类型 |
公开 |
备注 |
api_RC4 |
|
√
|
标准RC4算法 |
参数名 |
类型 |
参考 |
可空 |
数组 |
备注 |
_key |
字节集 |
√
|
|
|
key有效位中不能有字符串结尾符0,但结尾一定要是0 |
_原数据指针 |
整数型 |
|
|
|
|
_原数据长度 |
整数型 |
|
|
|
|
_RC4结果存放缓存指针 |
整数型 |
|
|
|
需提前申请数据空间 |
|
说明 |
|
api_alloc 内存池:申请内存块 |
C++接口原型 |
void* api_alloc(unsigned int _size) |
_size |
要申请的内存大小 |
返回值 |
内存指针,该指针用完需调用api_free(指针)释放 |
易接口 |
子程序名 |
返回值类型 |
公开 |
备注 |
api_alloc |
整数型 |
√
|
从内存池申请内存,返回申请到的内存指针 |
参数名 |
类型 |
参考 |
可空 |
数组 |
备注 |
申请内存大小 |
整数型 |
|
|
|
|
|
说明 |
申请内存,其实是从内存池中取出一块相应大小的内存块,该指针用完需调用api_free(指针)释放也就是放回内存池
|
api_free 内存池:释放内存块 |
C++接口原型 |
void api_free(void * _p) |
_p |
api_alloc 申请的指针 |
返回值 |
无 void |
易接口 |
子程序名 |
返回值类型 |
公开 |
备注 |
api_free |
整数型 |
√
|
从内存池申请内存,返回申请到的内存指针,服务端管理该内存自动回收 |
参数名 |
类型 |
参考 |
可空 |
数组 |
备注 |
_ptr |
整数型 |
|
|
|
|
|
说明 |
释放内存,其实是将内存块放回内存池 |
api_md5 标准md5算法 |
C++接口原型 |
void api_md5(const char* _in, int _len, char* _out) |
_in |
待取md5的文本或数据指针 |
_len |
待取md5的文本或数据长度 |
_out |
md5输出结果 32位HEX字符串大写 ,需提前申请数据空间 |
返回值 |
无 void |
易接口 |
子程序名 |
返回值类型 |
公开 |
备注 |
api_md5 |
|
√
|
标准RC4算法 |
参数名 |
类型 |
参考 |
可空 |
数组 |
备注 |
_数据 |
文本型 |
√
|
|
|
key有效位中不能有字符串结尾符0 |
_数据长度 |
整数型 |
|
|
|
|
_结果存放缓存指针 |
整数型 |
|
|
|
需提前申请数据空间 |
|
说明 |
|
api_TeaEncrypt Tea32轮加密算法 |
C++接口原型 |
int api_TeaEncrypt(const char* _in, int _inlen, const char* _key, char* _out) |
_in |
待加密文本或数据指针 |
_inlen |
待加密文本或数据长度 |
_key |
加密用的key,建议16字节字符串 |
_out |
加密后输出的数据地址,需提前申请好空间,例如C ++ char _out[128]={0} 易取空白文本(_inlen+8) |
返回值 |
返回加密后的数据长度, 返回值=(_inlen+7)/8 * 8 |
易接口 |
子程序名 |
返回值类型 |
公开 |
备注 |
api_TeaEncrypt |
整数型 |
√
|
Tea加密数据 |
参数名 |
类型 |
参考 |
可空 |
数组 |
备注 |
待加密数据的指针 |
整数型 |
|
|
|
|
待加密数据的长度 |
整数型 |
|
|
|
|
key |
文本型 |
|
|
|
建议16字节长度,超出的会截断 |
存放加密后数据的指针 |
整数型 |
|
|
|
需提前申请数据空间 |
|
说明 |
Tea最原始32轮算法,返回加密后的数据字节长度,_in的长度不是8的倍数,加密的数据里会在前边自动以0x00为补码,补足8字节的倍数 |
api_TeaDecrypt Tea32轮解密算法 |
C++接口原型 |
int api_TeaDecrypt(const char* _in, int _inlen, const char* _key, char* _out) |
_in |
待解密文本或数据指针 |
_inlen |
待解密文本或数据长度 |
_key |
解密用的key,建议16字节字符串,对称算法需与加密时用的key一样 |
_out |
密后输出的数据地址,需提前申请好空间, 例如C ++ char _out[128]={0} 易取空白文本(_inlen) |
返回值 |
返回解密后的数据长度, |
易接口 |
子程序名 |
返回值类型 |
公开 |
备注 |
api_TeaDecrypt |
整数型 |
√
|
Tea解密数据 |
参数名 |
类型 |
参考 |
可空 |
数组 |
备注 |
待解密数据的指针 |
整数型 |
|
|
|
|
待解密数据的长度 |
整数型 |
|
|
|
|
key |
文本型 |
|
|
|
|
存放解密后数据的指针 |
整数型 |
|
|
|
需提前申请数据空间 |
|
说明 |
解密后的数据会自动去除头部的补码0x00 |
|