- 博客(102)
- 资源 (61)
- 收藏
- 关注
转载 C++使用openssl建立证书,进行签名,验签,加密,解密(基于RSA)
同理,验签的时候也需要该哈希,和签名后的数据。(PS:其实真正的通信在签名过后还需要进行base64编码处理,对应接收时也需要base64解码,因为签名后的数据是二进制的,无法正常阅读)这个函数会给出错误代码,配合其余的代码会告诉我们哪里出错,比如他告诉了我,我的签名数据的长度错误,siglen error,因为这里的签名是二进制,不能通过使用strlen()等方式获取,所以我在签名后打印了签名的长度(自动绑定在outlen中),才发现长度是128.(不管我做的sha1还是sha256或者md5)
2024-05-10 14:50:40
414
1
原创 qt movetoThread 函数使用
/! put the following code in constructorQThread *thread = new QThread;//! type of m_weakThread is QWeakPointer<QThread>m_weakThread = thread;Worker *worker = new Worker;//! type of m_weakWorker is QWeakPointer<Worker>m_weakWorker =
2021-06-03 10:36:00
375
转载 RTMP协议分析 一、RTMP包头
RTMP协议 封包 参考Red5RTMP协议封包 由一个包头和一个包体组成,包头可以是4种长度的任意一种:12, 8, 4, 1 byte(s).完整的RTMP包头应该是12bytes,包含了时间戳,Head_Type,AMFSize,AMFType,StreamID信息,8字节的包头只纪录了时间戳,Head_Type,AMFSize,AMFType, 4个字节的包头记录了时间戳,Head_Type。1个字节的包头只记录了Head_Type。包体最大长度默认为128字节,通过chunkSize可改变包...
2021-04-25 10:56:49
542
原创 linux 下编译crtmpserver出现编译错误更改方法
cmake -DOPENSSL_INCLUDE_DIR=/usr/include/ssl -DOPENSSL_SSL_LIBRARY=/usr/lib/x86_64-linux-gnu/libssl.so -DOPENSSL_CRYPTO_LIBRARY=/usr/lib/x86_64-linux-gnu/libcrypto.so -B./build -H. -DCMAKE_BUILD_TYPE=Release
2021-04-19 16:12:52
272
转载 win7下使用共享内存方式CreateFileMapping失败错误码5的解决方法
在普通应用程序中使用共享内存方式创建内存共享对象时,CreateFileMapping函数总是返回句柄为NULL,通过GetLastError得到返回错误码 0x5, 问题解决:使用Local 代替Global, 问题解决,下面是使用实例: TCHAR szName[] = TEXT("Local\\MyFileMappingObject"); TCHAR szName[] = TEXT("Global\\MyFileMappingObject"); 原来Glo...
2021-04-13 15:04:19
2736
转载 C++模板类/函数,将头文件与源文件分离
将包含模板的源文件与头文件分开关键在于模板显式实例化。解决方案模板函数分离源文件按一般方式编写.h和.cpp文件,但注意添加template <typename T>的声明; 在.cpp文件末尾,添加模板显式实例化代码,如:// 显式实例化,注意,`template`之后没有`<>`,若添加则会报错!// 每种将被使用的类型,均需要进行显式实例化template void A::show(int &&);template void A:
2020-12-04 19:47:46
6238
转载 c++自定义结构体通过模板实现
#include <iostream> #include <typeinfo> #include <string> using namespace std; template < typename T > class bst { struct Node{ T data; //int password; //int name; Node* L; ..
2020-12-04 19:40:51
852
转载 linux进程间通信--消息队列相关函数(ftok)详解
ftok消息队列、信号灯、共享内存常用在Linux服务端编程的进程间通信环境中。而此三类编程函数在实际项目中都是用System V IPC函数实现的。System V IPC函数名称和说明如下表15-1所示。表15-1 System V IPC函数 消息队列 信号灯 共享内存区 头文件 <sys/msg.h> <sys/sem.h>...
2020-11-26 14:54:48
505
转载 window环境下thrift Compiler 编译步骤
在windows环境下,编译官方提供的thrift compiler源文件,出现一些错误,通过查找资料,解决了相关问题,在此记录下:·1、下载Bison for Windows 网址:http://gnuwin32.sourceforge.net/packages/bison.htm选择安装包:安装该程序,注意所选路径中一定不能包含空格和汉字,否则编译失败。2、下载Flex for Windows 网址: http://gnuwin32.sourceforge.net/packages/
2020-11-19 13:43:44
291
原创 thrift在windows的编译/安装--c++版
2. boost安装/编译/链接 具体步骤如下: *) 下载boost 1. 下载 boost_1_55_0.zip *) 编译boost 1. 执行 bootstrap.bat 2. 执行 b2.exe (编译的时间较长, 请耐心等待) *) 验证boost 在virtual studio的window console工程属性中添加如下: 1. 附加包含目录: $BOOST_HOME 2. 附加库目录: $BOOST_HOME\stage\l
2020-11-19 13:41:32
641
转载 检测MSWORD.OLB是否注册及注册的代码
此文章为MSWORD.OLB未正确注册导致问题现象及解决方法的代码解决:代码逻辑:1、先检测是否注册了wordolb。 检测方法:看能否得到word 文档对象的接口。如果得不到且错误返回码为TYPE_E_CANTLOADLIBRARY,则定义为olb未注册成功。2、发现未注册,使用regtlibv12.exe注册wordolb。以下是关键代码:(1)检测wordolb是否注册 /* * check if word ole i...
2020-11-05 14:45:11
655
转载 shell脚本--sed的用法
写的比较好的sed用法,记录下以后查阅留着用!sed在处理文本时是逐行读取文件内容,读到匹配的行就根据指令做操作,不匹配就跳过。sed是Linux下一款功能强大的非交互流式文本编辑器,可以对文本文件进行增、删、改、查等操作,支持按行、按字段、按正则匹配文本内容,灵活方便,特别适合于大文件的编辑。本文主要介绍sed的一些基本用法,并通过shell脚本演示sed的使用实例。1.sed的使用方法,调用sed 命令的语法有两种:一.在命令行指定sed指令对文本进行处理:sed +选项 ‘指令’ 文.
2020-10-21 09:46:25
10918
2
转载 OLE(COM组件)方式写excel
EXCAL操作(一)打开写入参考例子:https://blog.youkuaiyun.com/ywx123_/article/details/77074038这是另一个优快云博主写的,我也是参考他的例子去做的,再此感谢这位博主。新建一个MFC项目点击下一步选择基于对话框直接点完成,进来后如下图先点项目,右键属性,更改为多字节。先什么都不动,编译一下代码。默认看能不能通过。然后点项目,右键类向导。弹出窗口如下点击添加类-类型库中的MFC类弹出
2020-10-15 15:56:15
919
转载 在VS2010中利用MFC读取word、ppt、excel格式文件
本文源码的应用环境说明:Windows 7,Microsoft Visual Studio 2010,Microsoft Office Excel 2013最近自己在做一个利用OLE/COM的实现MFC读取word、excel和ppt格式里面的内容,虽然有关这方面的介绍很多,但是感觉比较杂,比较乱,因此将自己整理加修改的结果写出来,希望能够对以后做这方面格式读取的有帮助。1、安装office软件。由于利用的是Office的OLE/COM控件来读取,所以Office是要预先装好2.导入并封装W
2020-10-15 15:53:41
1460
转载 vc屏幕截图实现
1.获取保存截图文件的路径,暂时选定为桌面 //把截图的文件保存到桌面 BOOL CaptureLolToDesktop(HWND hWnd) { LPRECT lprc = new RECT; GetWindowRect(hWnd,lprc); DWORD llocaltime = GetTickCount(); char chDesktopPath[MAX_PATH] = {0}; SHGetSpecialFolderPat
2020-09-25 14:04:06
1279
原创 windows进程间通信-管道
来自msdn的例子:服务端:#include <windows.h> #include <stdio.h> #include <tchar.h>#include <strsafe.h>#define BUFSIZE 4096 DWORD WINAPI InstanceThread(LPVOID); VOID GetAnswerToRequest(LPTSTR, LPTSTR, LPDWORD); int _tmain(VOID)
2020-09-25 09:53:37
181
转载 VC获得程序自身的版本号
char* GetLocalPogramVersion() { TCHAR pFilePath[MAX_PATH] = {0}; DWORD dwRet = GetModuleFileName(NULL, pFilePath, MAX_PATH); if(dwRet == 0) { TRACE("h获取程序的文件路径失败,错误码:%s\n",GetLastError()); return ""; } TRACE("..
2020-09-25 09:46:33
354
原创 windows下读取磁盘扇区数据
在Windows下,磁盘可以看做是一个文件,其文件名为\\\\.\\PhysicalDriveX,其中X表示磁盘的编号,例如\\\\.\\PhysicalDrive0表示的是第0号磁盘,如果需要读取一个磁盘只需要通过对应的文件名称获取到磁盘的句柄,然后通过函数ReadFile读取即可,下面是相关的代码。//通过给定磁盘的编号,获取到磁盘的句柄HANDLEGetDiskHandle(intiDiskNo){charszDriverBuffer[128];memset(...
2020-09-22 09:34:59
2326
1
原创 vc进程间互斥Mutex
参考MSDN例子First Process#include <windows.h>#include <stdio.h>#include <conio.h>// This process creates the mutex object.int main(void){ HANDLE hMutex; hMutex = CreateMutex( NULL, // defau...
2020-09-11 17:21:50
493
转载 vs2010 下CHtmlView 页面会闪烁
web browser控件在对话框程序中不会闪烁, 而在CWnd中, 当窗口缩放的时候就会闪.一个web browser控件由3层窗口组成:Shell EmbeddingShell DocObject ViewInternet Explorer_Server而Internet Explorer_Server这层窗口可能只有在显示网页后才出现. 刚创建的时候并没有这层窗口. 闪烁的原因就是Internet Explorer_Server在显示的时候总是先画背景在画前景, 交替刷新导致的.所...
2020-09-09 13:54:45
190
转载 libcurl 接受完整数据
首先了解一下基本的函数作用1. 调用curl_global_init()初始化libcurl2. 调用curl_easy_init()函数得到 easy interface型指针3. 调用curl_easy_setopt()设置传输选项4. 根据curl_easy_setopt()设置的传输选项,实现回调函数以完成用户特定任务5. 调用curl_easy_perform()函数完成传输任务6. 调用curl_easy_cl...
2020-09-03 16:40:54
808
转载 win7 vs2015 下编译 tesseract 4.1.1
此文章为 汉学@博客园 原创作品,转载请保留版权信息原文链接:https://www.cnblogs.com/c2soft/articles/13194981.html一、总体思路各库之间的依赖关系及使用的工具如下:之前在 win7 64位 + VS2017 + VCPKG 的环境下很顺利地编译了 tesseract 4.1.1,可是当我想对 tesseract 的源码做下改动时,发现编译过程完全被 VCPKG 所接管,没法重新编译 tesseract 库(C语言门外汉,惭愧),于.
2020-08-29 15:21:57
1099
转载 C++对EML文件的读取,各种邮件客户端的邮件读取
采用微软官方的动态链接库解决这个问题。就显得很方便了。首先我们建立一个MFC Dll 项目。。然后在头文件中加入:#import <cdosys.dll> no_namespace raw_interfaces_only#import “C:\Program Files\Common Files\System\ado\msado15.dll” no_namespace raw_interfaces_only这是我电脑中的DLl路径。各个版本的操作系统dll的路径可能不一样。
2020-08-29 10:11:29
1184
转载 C++11并发编程-条件变量(condition_variable)详解
总结的很详细,打算记录下来。原文地址:https://www.2cto.com/kf/201506/411327.html头文件主要包含了与条件变量相关的类和函数。相关的类包括std::condition_variable和std::condition_variable_any,还有枚举类型std::cv_status。另外还包括函数std::notify_all_at_thread_exit(),下面分别介绍一下以上几种类型。std::condition_variable 类介绍st...
2020-08-26 16:17:10
1271
转载 使用CreateProcess运行程序 + 使用命令行对html文件进行打印
由于我们程序中通常只是将外部程序或者一个命令行运行起来,并不需要进行后续的控制,于是我将这个操作封装成了一个方便快速操作的函数CreateProcessQuick,一般情况下,应用程序名称不需要指定,我们只需指定后面的命令行参数。如果是运行notepad程序,则只需要指定lpCommandLine为"notepad"。近期所做的一个功能是在程序中指定打印一个html文件,路径已知。使用processexplorer查看打印文件对话框的命令行为"rundll32.exe" C:\Windows\sys
2020-08-24 14:23:22
343
1
转载 VC++文件路径和文件名处理函数
路径截断与合并函数 GetModuleFileName 得到模块路径名 PathRemoveArgs 去除路径的参数 PathRemoveBackslash 去除路径最后的反斜杠“\” PathAddBackslash 在路径最后加上反斜杠“\” PathRemoveBlanks ...
2020-08-17 16:46:17
837
原创 sqlite3的特殊字符转义及通配符
sqlite3数据库在搜索的时候,一些特殊的字符需要进行转义,具体的转义如下:/->//'->''[->/[]->/]%->/%&->/&_->/_(->/()->/)c/c++ 转换函数voi...
2020-08-13 09:50:54
1894
原创 C++实现utf8和gbk编码字符串互相转换
不同系统或者服务器之间消息传递经常遇到编码转换问题,这里用C++实现了一个轻量的gbk和utf8互相转换,可跨平台使用。(重量级的可以用libiconv库)在windows下用<windows.h>头文件里的函数进行多字节和宽字符转换,linux下采用<iconv.h>头文件里的函数进行编码互相解析#include <iostream> #include <string> #include <string.h> #include <s
2020-08-08 13:34:24
505
转载 zlib在windows上的编译
首先从http://www.zlib.net/下载了最新的源代码,版本是1.2.7解压后,实际已经提供了在VC下编译的工程,目录为:zlib-1.2.7\contrib\vstudio其中只有vc9和vc10因为我用的是vs2008,因此用vc9,打开项目后,其中的zlibstat是编译为静态库zlibvc是编译为动态库,还有其它一些工程暂时未研究编译动态库时碰到的第一个问题就是需要link两个文件,..\..\masmx86\match686.obj..\..\masmx86\inffas
2020-08-08 10:53:17
610
原创 c++中如何动态的初始化一个二维数组
#include<iostream> #include<stdlib.h> using namespace std; int main() { int M, N; int **array; cout << "请输入M,N的值:" << endl; cin >> M >> N; if (M <= 0 || N <...
2020-08-04 09:30:46
1408
原创 ubuntu 下libvhdi挂载 vhd的脚本
#! /bin/sh# 通过 vhdimount 实现 vhd 的挂载 ,挂载 vhd 中的第一个分区# 需要安装的软件包 sudo apt-get install libvhdi-utils sleuthkit# 需要 awk 计算 要装载分区的首位置 offset = start_byte =Units * Startecho $1echo mkdir......VhdPath=`dirname /v_disk.`basename $1``sudo mkdir $VhdPath/`bas
2020-07-14 08:55:17
1013
转载 libvmdk源码编译方法
内容:介绍libvmdk库的安装。libvmdk 是用于访问 VMware Virtual Disk (VMDK) 格式文件的库。Homepage: https://github.com/libyal/libvmdkDocs: https://github.com/libyal/libvmdk/wiki安装git clone https://github.com/libyal/libvmdkcd libvmdk./synclibs.sh./autogen.sh./config
2020-07-10 18:03:49
812
原创 Ubuntu检查apt-get软件列表
1.搜索所有列表sudo apt-cache search all2.搜索所有软件并去掉重复sudo apt-cache search all | wc3.检索指定软件sudo apt-cache search all | grep gcc
2020-07-09 11:35:06
972
转载 编译CEF3 发生 c101008d: Failed to write the updated manifest to the resource of file
用VS 2017 15.9.24 在编译 CEF3源代码时候,发现在ceftests 会出现Errorc101008dFailed to write the updated manifest to the resource of file "D:/CEF/cef_binary_83.3.12_windows32/build/tests/ceftests/Debug/ceftests.exe". ?????????????百度,bing等,都是说1、关掉杀软或2、在属性设置中 Li...
2020-07-09 09:12:33
1070
转载 fork与vfork的区别
fork()与vfock()都是创建一个进程,那他们有什么区别呢?总结有以下三点区别:1.fork():子进程拷贝父进程的数据段,代码段vfork( ):子进程与父进程共享数据段2.fork ()父子进程的执行次序不确定vfork 保证子进程先运行,在调用exec 或exit 之前与父进程数据是共享的,在它调用exec或exit 之后父进程才可能被调度运行。3.vfork ()保证子进程先运行,在她调用exec 或exit 之后父进程才可能被...
2020-06-30 17:27:06
222
原创 【IPC通信】基于管道的popen和pclose函数
标准I/O函数库提供了popen函数,它启动另外一个进程去执行一个shell命令行。这里我们称调用popen的进程为父进程,由popen启动的进程称为子进程。popen函数还创建一个管道用于父子进程间通信。父进程要么从管道读信息,要么向管道写信息,至于是读还是写取决于父进程调用popen时传递的参数。下在给出popen、pclose的定义:#include <stdio.h>/*函数功能:popen()会调用fork()产生子进程,然后从子进程中调用/bin/sh -c来.
2020-06-30 14:48:27
150
转载 简单的linux service(linux服务)编写,运行示例
1.写一个简单小程序 1 2 3 4 5 6 7 8 9 10 11 #include<stdio.h> #include<stdlib.h> int main(int argc,char **argv) { while(1) { printf("hello world\n"); s.
2020-06-30 10:13:14
1129
转载 在CentOS 7中使用VS Code编译调试C++项目
1. 安装VSCODE见VSCode官方链接https://code.visualstudio.com/docs/setup/linux#_rhel-fedora-and-centos-based-distributions先下载yum源:sudo rpm --import https://packages.microsoft.com/keys/microsoft.ascsudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseu..
2020-06-29 14:46:51
1031
转载 C++实现utf8和gbk编码字符串互相转换
不同系统或者服务器之间消息传递经常遇到编码转换问题,这里用C++实现了一个轻量的gbk和utf8互相转换,可跨平台使用。(重量级的可以用libiconv库)在windows下用<windows.h>头文件里的函数进行多字节和宽字符转换,linux下采用<iconv.h>头文件里的函数进行编码互相解析。代码#include <iostream>#include <string>#include <string.h>#include
2020-06-28 13:10:03
1624
installshield教程
2014-11-21
Linux+C编程实战源码
2017-09-19
ffmpeg sdl录屏
2017-06-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人