c++开发实战源码
10多年以c/c++项目开发的经验,开发个几十甚至上百个大大小小项目.现把一些常用的积累代码归类,封装,开源和分享出来,内容涵盖了多线程,日志,网络通讯,文件操作,FTP,内存操作,音视频等,能对您的项目开发有一定的帮助,就是我最大的收获.good luck!
keivin2006
一名c/c++/vc/qt 的小学生,“精通”c,“精通”c++,“精通”vc++,“精通”php,“精通”qt,“精通”java,
“精通”python,“精通”c#,“精通”...! 编不下去了,只要见过名字的都我“精通”....为哈,因为我现在是csdn“砖家”了!
本人qq: 88520350
qq学习群:930432714 (C/C++/QT/VC学习交流群) 海量学习资料都分享在群里
指点学习方向,掌握学习要点,快速提高技术水平, 技术分享,共同学习!
展开
-
c++ SHA1哈希散列算法(附demo源码)
1 SHA1算法简介安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。SHA1有如下特性:不可以从消息摘要中复原信息;两个原创 2021-07-17 12:03:35 · 945 阅读 · 0 评论 -
c++ web接口通讯URL编码(附源码)
url编码是一种浏览器用来打包表单输入的格式。浏览器从表单中获取所有的name和其中的值 ,将它们以name/value参数编码(移去那些不能传送的字符,将数据排行等等)作为URL的一部分或者分离地发给服务器。不管哪种情况,在服务器端的表单输入格式样子象这样:theName=Ichabod+Crane&gender=male&status=missing& ;headless=yesURL编码遵循下列规则: 每对name/value由&;符分开;每对来自表单的na原创 2021-07-17 11:24:31 · 486 阅读 · 0 评论 -
ipcam rtsp流生成 mp4( 附源码)
给定一个网络摄像头 rtsp 播放取流地址:rtsp://192.168.1.13:554/user=admin&password=&channel=1&stream=0.sdp我们不像去研究它的sdk功能,因为不同的摄像头不同,在集成相当多的sdk, 比如我们什么都不要,只要一个简单的录制功能简单的说就是取流后,保存录像的功能,这个时候 ffmpeg就满足我们的要求,只要一个url就可以直接取流:再用 nginx搭建一个点播服务器,录制的视频就可以点播了,是不是原创 2021-02-07 17:40:09 · 2819 阅读 · 20 评论 -
获取应用程序版本信息
BOOL GetFileVesion(CString& strVersion, LPCTSTR pszAppFullPath) { //char szAppFullPath[_MAX_PATH] = {0}; if (!pszAppFullPath && !IsFileExist(pszAppFullPath)) { return FALSE; } //获取当前文件的版本信息 DWORD dwLen.原创 2021-02-03 15:57:42 · 1306 阅读 · 32 评论 -
ini配置文件读写(大华)
以下代码来自大华工程师所写,代码摘自大华工业相机sdk代码很简洁,也有很多注释,所以分享出来:来看头文件:// Cfg.h: interface for the CCfg class.//// 功能描述:配置功能,一般根据读取配置决定是否显示某配置项;// Function Description: configuration function. Generally, whether to display a configuration item depends on the read原创 2021-01-19 15:44:11 · 2264 阅读 · 42 评论 -
字符串ip转成整型ip
//pip 源//pszip 输出ip// 长度void CForceIpDlg::strIpToNumberIp(const char* pIp, int* pszIp, int iSize){ if ( NULL == pszIp || iSize < 4 ) { return; } std::string stdstrValue = pIp; int i = 0; ::memset(pszIp, 0, (sizeof(int) * iSize)); while.原创 2021-01-18 17:31:09 · 470 阅读 · 24 评论 -
C++获取指定目录剩余磁盘空间(微软官方SDK版本)
代码来自:C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\capture\amcapdemo是获取空间是用来录像,它还做了一个比较, 要录多大,当前磁盘剩多大!代码很有用,比我以前发的版本要高级些,当然功能是一样的。。。。。SDK是这么调用的: DWORDLONG dwlFileSize = 0; long lFreeS..原创 2020-12-30 16:13:24 · 2176 阅读 · 42 评论 -
c++ UDP服务端&客户端demo
UDP客户端demo 如下:#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include <netdb.h>//客户端源码#include <sys/types.h>#include <netinet/in.h>#include <sys/un.h>#include <sys/s.原创 2020-12-14 09:46:30 · 1851 阅读 · 27 评论 -
c++AES加密解密(附源码)
AES,高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。严格地说,AES和Rijndael加密法并不完全一样(虽然在实际应用中二者可以互换),因为Rijndael加密法可以支持更大范围的区块和密钥长度:AES的区块长度固定为128 比特,密钥长度则可以是128,192或256比特;而Rijndael使用的密钥和区块长度可以.原创 2020-12-13 14:10:01 · 4201 阅读 · 42 评论 -
3des加解密(+MD5) c++实现(附源码)
VC++开发常用功能一系列文章(欢迎订阅,持续更新...)源代码demo已上传到百度网盘:永久生效 ,文章尾部附 百度链接3DES,也称为3DESede或TripleDES,是三重数据加密,且可以逆推的一种算法方案。1975年美国IBM公司成功研究并发布了DES加密算法,但DES密码长度容易被暴力破解,通过对DES算法进行改进,针对每个数据块进行三次DES加密,也就是3DES加密算法。但由于3DES的算法是公开的,所以算法本身没什么秘密可言,主要依靠唯一密钥来确保...原创 2020-12-06 21:06:03 · 3317 阅读 · 33 评论 -
VC++实现系统托盘功能(附源码)
VC++开发常用功能一系列文章(欢迎订阅,持续更新...)Windows桌面的系统托盘位于任务栏的右侧,即Windows桌面的右下方,它常用来显示一些系统的状态。如系统时间,音量控制以及其他的一些图标。常常能见到一些优秀的软件在运行后会将其应用程序图标加入到系统托盘中,如金山词霸。如果能将自己编写的应用程序的图样也加入到系统托盘中,将会使程序显得很有专业水准。如下图:这些应用都是应用程序的托盘功能:其实这个功能要实现比较简单,把图准备好,主要用到Shell_N...原创 2020-12-06 20:24:20 · 2921 阅读 · 55 评论 -
VC++实现内存映射文件(附源码)
VC++开发常用功能一系列文章(欢迎订阅,持续更新...)内存映射文件:是由一个文件到一块内存的映射。Win32提供了允许应用程序把文件映射到一个进程的函数 (CreateFileMapping)。内存映射文件与虚拟内存有些类似,通过内存映射文件可以保留一个地址空间的区域,同时将物理存储器提交给此区域,内存文件映射的物理存储器来自一个已经存在于磁盘上的文件,而且在对该文件进行操作之前必须首先对文件进行映射。使用内存映射文件处理存储于磁盘上的文件时,将不必再对文件执行I/O操作,使得内存映射文...原创 2020-12-06 16:38:38 · 928 阅读 · 24 评论 -
C++ huffman数据压缩算法实现(附源码)
什么是Huffman压缩 Huffman( 哈夫曼 ) 算法在上世纪五十年代初提出来了,它是一种无损压缩方法,在压缩过程中不会丢失信息熵。并且能够证明 Huffman 算法在无损压缩算法中是最优的。 Huffman 原理简单,实现起来也不困难,在如今的主流压缩软件得到了广泛的应用。 相应用程序、重要资料等绝对不同意信息丢失的压缩场合, Huffman 算法是非常好的选择。 怎么实现Huffman压缩 哈夫曼压缩是个无损的压缩算法,一般用来压缩文本和程序文件。哈夫曼压缩属于..原创 2020-12-06 16:02:46 · 3746 阅读 · 70 评论 -
VC实现浏览文件与目录功能
1.浏览 文件用 CFileDialog// 浏览--文件void testdlg::OnBnClickedBtnBrower(){ CString szPath = ""; CFileDialog FDlg(TRUE , ".doc" , NULL , OFN_HIDEREADONLY , "word文件(*.doc)|*.doc|所有文件(*.*) |*.*||" ); // 显示对话框并使用户可以进行选择 if(IDOK == FDlg.DoModal())原创 2020-10-27 11:28:47 · 990 阅读 · 22 评论 -
VC++wifi连接(附源码)
VC++开发常用功能一系列文章 (欢迎订阅,持续更新…)第2章:VC++wifi连接增强版源代码demo已上传到百度网盘:永久生效代码通过 WLAN的接口,采用profile的方式,支持有密码与无密码的连接 ,关键是在于怎么设置好这个profile 参数BOOL CwifiDlg::ConnectWanByWpa(CString strssid, CString strpassword){ // TODO: Add your control notification handler cod原创 2020-10-24 11:22:02 · 14051 阅读 · 109 评论 -
VC++获取CPU使用率,内存使用率
VC++开发常用功能一系列文章 (欢迎订阅,持续更新…)源代码demo已上传到百度网盘:永久生效/*********************获取CPU使用率***************************/__int64 LCMSysHelp::CompareFileTime(FILETIME time1, FILETIME time2){ __int64 a = time1.dwHighDateTime << 32 | time1.dwLowDateTime; __int6原创 2020-10-24 09:06:37 · 2247 阅读 · 80 评论 -
time_t与SYSTEMTIME相互转换
***time_t2SYSTEMTIME*/SYSTEMTIME TimetToSystemTime(time_t t){ FILETIME ft; SYSTEMTIME pst; LONGLONG nLL = Int32x32To64(t, 10000000) + 116444736000000000; ft.dwLowDateTime = (DWORD)nLL; ft.dwHighDateTime = (DWORD)(nLL >&g原创 2020-10-16 14:12:09 · 1145 阅读 · 18 评论 -
VC++判断网络连接状态(局域网,英特网)
主要是用来判断网络状态,是不是连接上网线啊,wifi是否连接上来了啊!这种一般是用在检测网络连接,或者断开网络,启用或禁用网络时可以用到,其它没什么用!static BOOL DoHaveInternetConnection(){ BOOL bRet = FALSE; // 如果函数返回FALSE,则肯定没有连接 DWORD dwFlag; __try { if (InternetGetConnectedState(&dwFlag, 0)) { // 必须有下列任意一原创 2020-10-15 16:31:31 · 4854 阅读 · 53 评论 -
VC++查找系统串口个数
通讯注册表枚举系统有几个串口功能int CIOCOMDlg::FindComPortCount(CStringArray &arrCom)//找串口个数{ arrCom.RemoveAll(); HKEY hkey; // 主根健名 LONG lRes = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("HARDWARE\\DEVICEMAP\\SERIALCOMM"), NULL, KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KE原创 2020-10-15 11:59:53 · 695 阅读 · 18 评论 -
vc++高精度时间计算
class CTimewatch {public:CTimewatch() { QueryPerformanceFrequency(&m_liPerfFreq); // Start(); } __int64 Start() { QueryPerformanceCounter(&m_liPerfStart); return m_liPerfStart.QuadPart; } __int64 N原创 2020-10-14 22:24:42 · 458 阅读 · 14 评论 -
VC++开发实用功能源码+demo
文章还会持续更新… (每篇文章尾都附有源码与demo的百度分享链接,没有任何套路<本人也没有公众号>,百分百可下载).(凡是留言与评论5篇以上的,留下你的邮件方式,源码与demo直接发你,开心就好)第1章:VC++ ini配置文件封装类源代码功能介绍:代码实现了读写整型、浮点型、字符串、16进制数据的功能第2章:VC++实现二维码(显示+保存图片)功能源代码功能介绍:采用LibQREncode ,可以生成二维码,保存二维码图片(bmp/jpg/png) ,以及在窗口上显示二维码,二原创 2020-10-14 11:44:39 · 822 阅读 · 1 评论 -
VC++ json11 使用(附demo源码)
VC++开发常用功能一系列文章(欢迎订阅,持续更新...)第32章:json11 使用(附demo源码)源代码demo已上传到百度网盘:永久生效JSON(JavaScript Object Notation)是一种轻量级的文本数据交换格式。JSON有很多常用的开源库,以前我经常使用c-json ,!比如还有jsoncpp ,fastjson等等!今天主要是用Json11 ,这个库相当轻量级,就一个cpp+hpp,采用的是c11标准,所以他命名也特别就叫json11 !...原创 2020-10-12 11:30:54 · 22410 阅读 · 56 评论 -
64位网络字节序与主机字节序转换
unsigned long long ntohll(unsigned long long val) { if (__BYTE_ORDER == __LITTLE_ENDIAN) { return (((unsigned long long )htonl((int)((val > 32))) > 32)); } else i原创 2017-04-06 08:36:52 · 5966 阅读 · 18 评论 -
vc 一次创建多级目录
// 判断目录(不能用来查询根目录,否则总是失败.)是否存在的函数static BOOL IsPathExist(char* lpszPath){USES_CONVERSION;//char* szTemp = W2A(lpszPath);char szTemp[MAX_PATH]={0};strcpy(szTemp, lpszPath);BOOL bExi原创 2017-04-06 08:47:51 · 4130 阅读 · 11 评论 -
tcp封装类
enum MySocketError{MySOCKET_NO_ERROR=0,MySOCKET_INVALID_ERROR_CODE,MySOCKET_ACCEPT_ERROR,MySOCKET_BIND_ERROR,MySOCKET_BUFOVER_ERROR,MySOCKET_CONNECT_ERROR,MySOCKET_FILESYSTEM_ERROR,MyS原创 2017-04-07 08:58:31 · 5288 阅读 · 18 评论 -
ini文件读写封装类
#ifndef _PROFILE_H_#define _PROFILE_H_/*** 读写INI文件的类 */class CProfile{public: CProfile(); ~CProfile(); /// 设置INI文件名 VOID SetProfile( LPCTSTR szIniName );原创 2017-04-07 10:09:18 · 4867 阅读 · 24 评论 -
写日志封装类
#pragma once#ifndef CPRINTHELP_HHHHHH#define CPRINTHELP_HHHHHH#include #define FILELINE_FUNC_F "{ %s(%d)->[ %s ] } "#define FILELINE_FUNC_I __FILE__,__LINE__,__FUNCTION__原创 2017-04-07 10:30:35 · 3253 阅读 · 13 评论 -
mfc 获取文件大小
unsigned int GetFileLen_32(const _TCHAR* tchFileName) { if (NULL == tchFileName) { return 0; } WIN32_FIND_DATA fileInfo; memset(&file原创 2017-04-17 08:36:52 · 3993 阅读 · 10 评论 -
调节系统音量VC++ (win10/win7)
#include #include #include #include bool SetVolum(int volume){HRESULT hr;IMMDeviceEnumerator* pDeviceEnumerator=0;IMMDevice* pDevice=0;IAudioEndpointVolume* pAudioEndpointV原创 2017-06-08 17:26:17 · 6312 阅读 · 18 评论 -
VC++获取系统序列号(SN)附源码
VC++常用功能封装代码一系列文章与源码 (欢迎订阅,持续更新...)https://blog.csdn.net/kaizi318/article/details/108846326源代码demo已上传到百度网盘:永久生效代码实现了获取序列号,产品型号,产品名称,系统版本,SKU,产品制造商等信息!获取的序列号同命令行模式下的wmic bios get serialnumber代码实际也是获取的是主板bios序列号上代码: string str; ...原创 2020-10-10 23:40:24 · 12967 阅读 · 58 评论 -
VC++隐藏任务栏(附源码)
VC++常用功能封装代码一系列文章与源码 (欢迎订阅,持续更新...)https://blog.csdn.net/kaizi318/article/details/108846326源代码demo已上传到百度网盘:永久生效 ,代码实现了隐藏任务栏,隐藏开始菜单(win10)实际是控制下图这个开关功能 !void AutoHideTaskBar(BOOL bHide){ //这三句视情况加于不加#ifndef ABM_SETSTATE #define ABM_SE..原创 2020-10-10 21:54:50 · 4084 阅读 · 36 评论 -
vc tcp端口是否被占用
//遍历本地tcp端口 是否被占用bool CiServerCfgDlg::CheckPortIsOccupy(DWORD dwPort){PMIB_TCPTABLE pTcptable;pTcptable = (MIB_TCPTABLE*)malloc(sizeof(MIB_TCPTABLE));DWORD dwsize=sizeof(MIB_TCPTABLE);if (原创 2017-04-06 08:41:23 · 4112 阅读 · 28 评论 -
10进制转任意进制字符串(源代码)
// dec 10进制数//base 转换基数//strtrd 输出void ConvertDec(int dec, int base,char*strtrd){int t;int p=0;int idr;while (dec !=0){idr=dec%base;if (idr>10){strtrd[p++] =id原创 2012-10-19 15:17:04 · 4373 阅读 · 20 评论 -
VC++串口通讯(源代码)
VC++常用功能封装代码一系列文章与源码 (欢迎订阅,持续更新...))https://blog.csdn.net/kaizi318/article/details/108846326源代码demo已上传到百度网盘:永久生效 实现功能,实现了串口打开,接收,发送等功能 ,还支持modbus串口通讯功能如看效果:上代码,添加封装好的类到项目中,class CSerialPort{public: int m_nWriteSize; void ClosePort();...原创 2020-10-09 10:37:04 · 2724 阅读 · 40 评论 -
VC++常用字符串转换(附源码)
VC++常用功能封装代码一系列文章与源码 (打广告,哈哈,看看一系列再决定要不要订阅)https://blog.csdn.net/kaizi318/article/details/108846326源代码demo已上传到百度网盘:永久生效 ,代码实现了常用字符串转换操作功能#pragma once#include <string>#include <tchar.h>#include <strsafe.h>#include <vector>.原创 2020-10-04 14:01:59 · 1362 阅读 · 22 评论 -
vc++tcp网络通讯服务器+客户端(附源码)
VC++常用功能封装代码一系列文章与源码 (打广告,哈哈,看看一系列再决定要不要订阅)https://blog.csdn.net/kaizi318/article/details/108846326源代码demo已上传到百度网盘:永久生效 ,代码实现了TCP服务端功能,以及TCP客户端功能本代码实现大小数据传输都没问题,实现应用于局域网音视频传输,一点问题都没有!封装的是CAsyncSocket , 有详细注释,绝对可用,绝对开放源码!来直接上代码:#pragma oncenam.原创 2020-10-03 11:25:46 · 23985 阅读 · 118 评论 -
VC++多线程加锁封装(附源码)
源代码demo已上传到百度网盘:永久生效 ,代码封装了 线程函数读、写 加锁功能,支持跨平台,绝对好用直接上代码看封装类的头文件#ifndef __CLOCKX__ #define __CLOCKX__#ifdef WIN32#include <Windows.h>#else#include <pthread.h>#endifclass CLockX{public: CLockX(); CLockX(const CLockX &...原创 2020-09-30 10:31:57 · 1106 阅读 · 28 评论