c++
文章平均质量分 84
一技旁身
这个作者很懒,什么都没留下…
展开
-
qt和window抓包程序
发送方计算帧的循环冗余码校验(CRC)值,把这个值写到帧里。接收帧的网络适配器的物理地址(MAC 地址),为 6 个字节(48 比特)。作用是当网卡接收到一个数据帧时,首先会检查该帧的目的地址,是否与当前适配器的物理地址相同,如果相同,就会进一步处理;由于上层协议众多,所以在处理数据的时候必须设置该字段,标识数据交付哪个协议处理。前 6 位 1 和 0 交替,最后的两个连续的 1 表示告诉接收端适配器:“帧信息要来了,准备接收”。发送帧的网络适配器的物理地址(MAC 地址),为 6 个字节(48 比特)。原创 2023-11-21 12:26:21 · 314 阅读 · 0 评论 -
Opencv学习
一、常用函数介绍1. Mat imread(const string& filename,int flags=IMREAD_COLOR);说明:加载图片 默认是加载RGB 三Channel原创 2023-08-11 10:44:32 · 183 阅读 · 0 评论 -
c++ 重载、重写、隐藏
1 重载与覆盖成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual关键字可有可无。 覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;(4)基类函数必须有virtual关键字。隐藏(1)不同的范围(分别位于派生类与基类);(2)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基...原创 2020-09-08 11:59:30 · 167 阅读 · 0 评论 -
使用gsoap介绍
gsoap soap函数说明soap_begin_count() 该函数在再次soap结构中一些在该请求中要用到和可能用到的量进行清零/初始化,最主要是的设置xml结构的mode信息默认情况下是soap->mode=0x20008;soap_connect()函数中把原来的soap->mode进行了修改,这样在下次调用,同时对填入soap->buf的字符进行计数。soap->bufidx统计的是http协议部分的字符数。 -soap_envelope_begin_ou...原创 2020-07-02 18:45:51 · 1671 阅读 · 2 评论 -
c++ webservices搭建
一、准备工具 安装gsoap二、gsoap使用1. soapcpp2使用参数如下(soapcpp2是将.h文件解析生成.wsdl c/c++文件,工客户端服务端使用):-1 使用SOAP 1.1进行编译-2 使用SOAP 1.1进行编译-C 只生成客户端代码-S 只生成服务端代码-T generate server autorem -test code-L 不生成soapClientLib/soapServerL...原创 2020-06-11 18:21:45 · 854 阅读 · 0 评论 -
c++ 11新特性
下面是总结的c++ 11新特性例子#include <memory>#include <map>#include <vector>#include <deque>#include <string>#include <iostream>#include <iomanip>#include &原创 2018-12-21 20:30:38 · 260 阅读 · 0 评论 -
linux 驱动访问外设备的方法
1. 操作IO端口(申请,访问,释放): I/O 端口是驱动用来和很多设备通讯的方法。(1)申请I/O 端口: 在驱动还没独占设备之前,不应对端口进行操作。内核提供了一个注册接口,以允许驱动声明其需要的端口:/* request_region告诉内核:要使用first开始的n个端口。参数name为设备名。如果请求成功返回值是非NULL;否则无法使用需要的端口(/proc/i...转载 2018-05-17 18:06:47 · 1160 阅读 · 0 评论 -
pci驱动开发详解
一、在了解pic启动开发前,作为开发人员需了解以下内核结构体:struct pci_device_id { __u32 vendor, device;/* Vendor and device ID or PCI_ANY_ID*/ __u32 subvendor, subdevice;/* Subsystem ID's or PCI_ANY_ID */ __u32 clas...原创 2018-05-11 18:40:36 · 13362 阅读 · 0 评论 -
linux 串口通信详解
1、串口的操作1.1打开:fd = open("/dev/ttySAC1", O_RDWR | O_NOCTTY | O_NDELAY); O_RDWR 读写方式打开; O_NOCTTY 不允许进程管理串口(不太理解,一般都选上); O_NDELAY 非阻塞(默认为阻塞,打开后也可以使用fcntl()重新设置)1.2写入...转载 2018-05-18 19:34:12 · 2221 阅读 · 1 评论 -
c语言free函数和c++new及delete总结
c语言free释放内存详细说明 1. free只能释放动态分配的内存空间(堆空间)。由(malloc,calloc,realloc)等函数分配。 例:int b=10;int* i = &b;free(i);//段错误,不能释放栈空间内存 2. 使用free释放堆内存空间时,其内部会判断该指针是否有效,然后判断指向的内存是否是一整块动态分配内存(malloc...原创 2018-03-13 21:03:55 · 2325 阅读 · 1 评论 -
linux 阻塞socket与非阻塞socket
阻塞socket和非阻塞socket的区别读操作对于阻塞的socket/recv,当socket的接收缓冲区中没有数据时,read调用会一直阻塞住,直到有数据到来才返回。当socket缓冲区中的数据量小于期望读取的数据量时,返回实际读取的字节数。当sockt的接收缓冲区中的数据大于期望读取的字节数时,读取期望读取的字节数,返回实际读取的长度。对于非阻塞socket而言,socket的接收缓冲区中有...转载 2018-03-23 13:28:01 · 4186 阅读 · 0 评论 -
c++ 析构函数和构造函数
一、构造函数1.特点: 1)构造函数名与类名一致 2)构造函数可以重载 3)只有构造对象时,系统调用 4)不能通过对象调用 5)无返回值2.构造函数的调用 只有在构建对象时,才会调用构造函数。也就是说只要调用了构造函数就必然会构建一个对象(拷贝构造函数也一样)3.调用顺序 我们知道,构造子类对象时,会先...原创 2018-03-09 17:37:04 · 246 阅读 · 0 评论 -
c++类模板和函数模板
模板是一种对类型进行参数化的工具,通常有两种形式:函数模板和类模板。一、函数模板:通式:template<class 形参名,class 形参名,...>函数返回类型 函数名(形参列表){函数体}注意:<>括号中的参数为模板形参(有类型模板形参和非类型模板形参),模板形参不能为空,class可以用typename替换。template<cla...原创 2018-01-19 16:34:39 · 274 阅读 · 0 评论 -
linux条件锁常见用法
看下面例子#include <iostream>#include <string.h>#include <pthread.h>#include <string>#include <unistd.h>using namespace std;class Mutex{private: pthread_mutex_t m_mutex; pthre...原创 2018-02-23 09:03:02 · 375 阅读 · 0 评论 -
c++ 左值、右值、右值引用、左值引用
c++里一切值必须属于左值、右值两者之一。左值:一切变量(包括用const修饰的变量)、对象、包括引用都属于左值;右值:一切字面值(可以是宏),临时无名对象(函数返回值),表达式(如a+n)。说明一下:函数返回值,返回的是某一个类型的值,并不是返回变量。左值并不是说能放在"="左边的值就是左值虽然用const修饰的变量其值不能改变,但是它仍是左值一、左值引用首先,引用仅仅是为变...原创 2018-03-15 11:56:26 · 366 阅读 · 0 评论 -
stl总结
stl知识总结stl共有六大组件:容器、算法、迭代器、仿函数、迭代适配器、空间配置器注意:在向stl容器里存入对象时,实际上是先在stl容器里构建了一个新的对象(使用要存入的对象构建的新对象)将这个构建的新对象装到容器里。因此当将对象a装入stl容器里后,对象a如果发生变化,装入到stl里的那个对象是不会跟着变的。所以,一般我们都存入指针,这样当将指针b装入stl容器后,通过指针b改变所指向...原创 2018-03-05 09:17:32 · 397 阅读 · 0 评论 -
deviceNet主/从站介绍
1. DeviceNet主从站特点介绍在一个DeviceNet网络中,主站是负责集中管理I/O数据的设备,并具备未连接报文管理UCMM(Unconnected Message Manager)功能。从站节点则是执行特定功能并将自己的I/O数据传送给主站的设备,可以无UCMM功能,但必须支持预定义主从显式报文连接。(1)DeviceNet从站特性DeviceNet从站在网络中拥有唯一的节点...转载 2018-07-25 14:05:15 · 7279 阅读 · 0 评论 -
c++虚函数
每个含有虚函数的类有一张虚函数表(vtbl),虚函数表类似数组,其表中每一项是一个虚函数的地址。也就是说虚函数表的每一项是一个指向虚函数的指针。 没有虚函数的类是不会有虚函数表的。 无论类中包含多少各虚函数,都只有一个虚函数表指针和一张虚函数表,之时表的大小变化。如果是A继承B,B继承C,B和C都有虚函数,那么类A仍然只有一个虚函数指针和一个虚...原创 2018-10-16 22:36:48 · 356 阅读 · 0 评论 -
socket tcp和udp
1. tcp是一种面向连接的、可靠的、基于字节流的运输层通信协议。用8位字节表示的数据流然后TCP把数据流分割成适当长度的报文段(受到链路层最大传送单元(MTU)的限制)。tcp为了保证不发生丢包,就给每一个字节一个序号,同时序号也保证数据的顺序,然后接手端对成功收到的字节发送一个ack确认;如果在合理的时间内没有发送ack确认信息,那么tcp会将数据重传。tcp会校验数据是否有错。2. ud...原创 2018-10-30 10:03:29 · 482 阅读 · 0 评论 -
socket编程深入了解
1. 使用socket建立套接字描述符时,内核实际上会注册一个socket结构体,可以在内核源码里找到,socket结构体定义如下:struct socket{ socket_state state; unsigned long flags; const struct proto_ops *ops; struct fasync_struct *fas...原创 2019-09-14 22:31:58 · 261 阅读 · 0 评论 -
c++读取windows指定注册表中的值
在程序中使用注册表,不外乎创建、打开、读取、设置、删除这五个常规操作,(要想获得更详细的资料可以参考Visual Studio6.0帮助目录中MSDN Library Visual Studio6.0|Platform SDK|Window Base Services|General Library|Registry条目)。下面我们就来关注这五个接口函数的用法: 一、 创建键RegCrea...原创 2019-08-01 21:22:39 · 2094 阅读 · 0 评论 -
正则表达式
正则表达式(regular expression)是计算机科学中的一个概念,又称规则表达式,通常简写为regex、regexp、RE、regexps、regexes、regexen。 正则表达式是一种文本模式。正则表达式是强大、便捷、高效的文本处理工具。正则表达式本身,加上如同一门袖珍编程语言的通用模式表示法(general pattern notation),赋予使用者描述和...原创 2019-08-01 21:19:15 · 500 阅读 · 0 评论 -
理解c函数执行完后,释放内存
在C语言中,函数仅仅是一个小的功能块,函数执行完后(也就是函数功能完成),会根据调用约定来释放,该执行函数所占用的内存资源。这里的资源就是执行该函数所占用的栈内存。当函数执行完后仅仅就是释放该函数所用的占用的资源。...原创 2019-06-21 19:37:10 · 4986 阅读 · 0 评论 -
c语言switch case及变量作用域和生存期
先说switch case陷阱#include<iostream>using namespace std;int main(int argc, char *argv[]){ int a =0; switch(a) { case 0: int b=1;cout<<b<<endl;break; ...原创 2019-04-23 14:35:46 · 3093 阅读 · 0 评论 -
c++throw放在函数后说明和inline关键字说明
首先说明try catch throw是c++异常处理机制。throw放在方法后面,说明该方法是否抛出异常,是什么类型异常。例子如下:class B{public: void fun() throw(){ throw string("ex");} void fun1() throw();};void B::...原创 2019-04-10 19:04:30 · 525 阅读 · 0 评论 -
c++ 派生类转基类,基类转派生类以及dynamic_cast说明
实例class base{ public: base() {} ~base() {} virtual void fun() { cout<<"base fun"<<endl; }};class driver:public base{ publ...原创 2019-03-15 19:05:37 · 3480 阅读 · 0 评论 -
c语言enum类型使用
在程序中,可能需要为某些整数定义一个别名,我们可以利用预处理指令#define来完成这项工作,您的代码可能是:#define MON 1#define TUE 2#define WED 3#define THU 4#define FRI 5#define SAT 6#define SUN 7在此,我们定义一种新的数据类型,希望它能完成同样的工作。这种...转载 2019-01-09 14:02:14 · 21227 阅读 · 0 评论 -
c++ input/output stream
一、input/output stream 关系二、类说明1) istream(输入流)2)ostream(输出流)3)ios4) iostream(继承istream和ostream) 内部没有方法5)fstream(继承iostream)6)ifstream(继承istream)7)ofstream(继承ostream)...原创 2018-12-26 13:21:36 · 3708 阅读 · 0 评论 -
c++ 和c#区别
一、编译过程 c++中编译过程为:预处理阶段(宏替换、文件包含、条件编译#if等)、编译阶段、汇编成目标文件、链接成可执行文件。 c#中没有宏,编译过程如下: 1.C#通过编译器(CSC)生成程序集(dll/exe),程序集内部是由微软中间语言(MSIL)组成。在这个过程中,CSC会检查错误,看是否符合C#的语言规范。 2.当运行程序集的时候,公共语言运行时...原创 2018-11-29 17:36:15 · 31833 阅读 · 3 评论 -
c++ linux pthread函数
一、pthread1.int pthread_create (pthread_t *pThread, const pthread_attr_t *pAttr, void * (*start_routine)(void *),void *arg);函数说明:创建一个线程;参数说明:参数一:线程id,创建线程时,为每一个线程分配一个Id。 参数二:线程属性,后面详细介绍线程属性。 参数三:线程函数,注...原创 2018-02-08 11:14:39 · 6062 阅读 · 1 评论 -
linux 使用sock编程实例
linux socket编程具体实例转载 2018-01-30 14:47:05 · 1766 阅读 · 0 评论 -
c++ lambda表达式
c++ lambda表达式原创 2017-08-31 16:16:25 · 293 阅读 · 0 评论 -
c语言标准库
标准库(Standard Library)是C语言重要的一部分,不过学习C语言这么长时间,都没有细致的了解过标准库到底中包含哪些内容,这几天打算来仔细看看这部分内容。C语言标准库有各种不同的实现,比如最著名的glibc, 用于嵌入式Linux的uClibc,还有ARM公司的自己的C语言标准库及精简版的MicroLib等。不同标准库的实现并不相同,而且提供的函数也不完全相同,不过有一个它转载 2017-09-27 17:00:52 · 11274 阅读 · 0 评论 -
c++调用sqlite接口
c++调用sqlite接口转载 2017-08-28 15:44:00 · 1256 阅读 · 0 评论 -
Tag c#,c++创建动态库
一、什么是动态库 动态库又称动态链接库英文为DLL,是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。原创 2016-11-18 21:03:10 · 427 阅读 · 0 评论 -
Tag c++调用c#动态库
有些时候,为了使用别人已经写好的C#库文件,我们需要使用C++调用C#库文件; 以下做了一简单的调用工程,步骤如下:1、准备C#库 (dll文件)第一步:单击"文件"---->"新建项目"---->"类图"---->"确认";第二步:在类里写个简单的方法;第三步:在"解决方案"右键,选择"生成解决方案B";在Debug文件夹下回产生一个dll文件2、创建c++工程第一步原创 2016-11-19 14:34:23 · 1838 阅读 · 0 评论 -
c语言调用Mysql数据库
一、mysql数据库的C语言常用接口API 1)初始化MYSQL句柄 MYSQL *pConn; pConn = mysql_init(NULL);2)连接数据库 // 第2、3、4、5参数的意思分别是:服务器地址、用户名、密码、数据库名,第6个为mysql端口号(0为默认值3306) if(!mysql_re原创 2016-11-20 21:10:17 · 2415 阅读 · 0 评论 -
c++调用动态库的方法
创建和调用动态库(vs2013)原创 2016-11-21 21:41:32 · 2394 阅读 · 0 评论 -
select函数详解
Select函数在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、 accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻...原创 2016-11-22 23:26:20 · 295 阅读 · 0 评论 -
WIN32、VxWorks、Linux线程类比
线程控制和线程通信的许多函数只是名称不同,其实质含义是等价的,下面我们来列个三大操作系统共同点详细表单:事项 WIN32 VxWorks Linux 线程创建 CreateThread taskSpawn pthread_create 线程终止 执行完成后退出;线程自身调用ExitThread 函数即终止自己;被其他线程调用函数Terminate原创 2016-12-02 17:54:50 · 645 阅读 · 0 评论