
操作系统
文章平均质量分 56
qianbo_insist
AI,网络安全,nodejs,c++ ,java,.net
email :[email protected]
weixin:18091589062
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
tcp转发服务桥(windows)
目的是为了在网关上转发udp数据和tcp数据。对于网络里面隔离的内网来说,有一台可以上网的服务器,那么通过两块网卡就可以转发出去,在服务器上进行数据的转发,有tcp和udp两种,udp已经写过了,这次使用了c# 来制作一个windows程序来转发tcp 数据。实际上,使用的是windows的netsh命令。程序简单,好用,非常稳定。原创 2023-07-10 22:31:13 · 1229 阅读 · 0 评论 -
windows下使用arp 协议
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址这个数据结构位ip和mac对应 typedef struct s_ip_fname {//一个网卡可能有多个IP地址 std :: vector < std :: string > ips;原创 2023-07-12 18:46:57 · 1709 阅读 · 0 评论 -
vs2019 链接 wsl系统,运行linux程序
首先安装wsl2系统,注意是wsl2 如果碰到wsl 0x800701bc错误,说明没有升级系统。安装完毕后,到windows的应用商店下载ubuntu。使用如下命令将wsl 设置成为2版本。原创 2023-02-19 09:24:13 · 562 阅读 · 0 评论 -
GB28181 AI视频数据库以及SDP协议(一)
搜索监控视频中的目标对象。为了快速搜索,打造数据库,记录预搜索目标,快速搜索。目前还在制作过程中,还不成熟,随时设计修改,望关注之人一同打造视频数据库。原创 2022-10-09 07:18:13 · 700 阅读 · 0 评论 -
服务器媒体事件和信号处理
总体来说,划分事件是为了在脚本中注册各类事件,从而向其他模块,可执行文件,通知各种异常和非异常的发生点,比如一个客户端链接上来,就是一个非异常发生点,超时脱线就是一个异常发生点。架构上划分事件清楚,就可以更加方便地将流程整理清楚。事件可以分为1 服务事件2 会话session事件3 服务状态事件,比如录像开始。原创 2022-10-04 07:20:18 · 575 阅读 · 0 评论 -
创建可执行进程(windows)在win10下的表现
CreateProcess函数在windows10下已经能够自动接收创建进程的输出,不用在像以前那样去创建管道去接收,而且这个函数容易出错了。原创 2022-07-23 19:48:35 · 476 阅读 · 0 评论 -
在windows文件系统中加右键执行程序
在windows中有一个很好的方式就是右键执行程序,怎么做?下面就是,比较简单show me the code#include <Windows.h>#include <iostream>#include <string>using namespace std;void add(string strMenuText, string strApplication);void del(string strMenuText);int main() { ad原创 2021-07-19 17:31:02 · 529 阅读 · 0 评论 -
windows 搜索文件
写完以后,一直放在某个地方没有用,说不定有人会用上,所以就放出来了//列出子文件夹的所有文件,并设定回调函数。比较简单,直接列出代码void listfiles(std::string dir, std::string namefolder,face_db_name &dbname);void listfolder(std::string dir, std::vector<string> & names);void searchfile(string folder, fa原创 2021-07-18 16:58:40 · 391 阅读 · 0 评论 -
网络安全之tcp阻截引擎 (一)
1、tcp协议的缺陷任何协议都有缺陷,tcp协议同样如此,tcp协议的三次握手是有一个不能轻易发现的缺陷,这个缺陷容易引起旁路中断,引起中间人攻击,可以让中间人篡改数据包,Man-in-the-MiddleAttack,我们先看下图,看懂了,就可以继续了。 实际上,这个缺陷就是在服务器和客户机真正建立连接之前,我们可以发送RST包,先告诉服务器断开,然后我们模拟服务器给客户端发包,直接串入到他们的网络中间。原创 2021-07-17 19:10:43 · 1795 阅读 · 2 评论 -
c# 与 c++ 界面同框终极技巧
1、界面编程,需要同框当你写了一个c# 程序,而又不得不使用c++ 例如MFC或者qt等来做高效率的编解码等等工作的时候,问题来了,怎么通信,怎么解决两个界面的问题,我们介绍一个终极技巧,那就是c# 直接嵌入c++窗口。2、制作c# 调用api dll2.1 setparent 函数设置父窗体函数,这是个API函数,可以设置窗体为另外一个窗体的父亲 public static extern int SetParent(IntPtr hWndChild, IntPtr hWndNewParent);原创 2021-07-14 21:57:18 · 4339 阅读 · 8 评论 -
windows下获取IP和MAC地址
1、定义数据结构//一个网卡可能有多个IP地址typedef struct s_ip_fname{ std::vector<std::string> ips; std::string mac;}s_ip_fname;使用std::vector<s_ip_fname> 去获取更多的网卡和ip,一个系统里面可能有多个网卡,一个网卡可以有多个ip地址,这个必须了解。2、获取mac的方法GetAdaptersInfo API可以获取多块接口卡的信息以下是代码:#in原创 2021-07-01 15:00:22 · 1205 阅读 · 0 评论 -
windows采集音频
定义线程类/*Author:钱波email: [email protected]: 18091589062func :线程类time: 2018年5月30日*/#ifndef _TTHREAD_RUN_ABLE_H_#define _TTHREAD_RUN_ABLE_H_#include <mutex>#include <queue>#include <thread>#include <atomic>#includ原创 2021-06-25 20:55:18 · 798 阅读 · 1 评论 -
如何做一个国产数据库(二)
如果做一个国产数据库一链接承接上文,继续1、重新定义数据结构typedef struct sdata{ uint32_t index; char vardata[128];}sdata;typedef struct sdata_index{ uint32_t index; uint32_t offset;}sdata_index;sdata_index 是我们要读到一个内存里面去的,同时,我们会使用内存查找的方式,拿到数据的索引值,在内存里面使用二分查找算法int binSe原创 2021-06-24 21:27:14 · 494 阅读 · 1 评论 -
如何做一个国产数据库系统(一)
做一个国产数据库做一个数据库系统真的是要懂的是基础,各种基础,网络,文件系统,操作系统,性能,测试,各方面都要懂使用基本方法索引文件+数据文件+ B+ 树 ,hash空间如图是写的一个数据库文件,前面两兆字节是索引,后面是数据。最前面的8字节数据为索引总量 4字节,和 目前索引量4字节。1、定义我们的数据结构typedef struct sdata{uint32_t index;char vardata[128];}sdata;这个数据结构表明 index是索引 ,vardat原创 2021-06-23 21:17:04 · 647 阅读 · 1 评论 -
windows linux 的内存映射文件写法
show me the code#include <stdio.h>#include <stdint.h>#ifdef _WIN32#include <Windows.h>class cmem_map{ HANDLE hFile = NULL; OFSTRUCT opBuf; HANDLE hMapfile = NULL; HANDLE hMapview = NULL; long offset = 0;public: cmem_map() {}原创 2021-06-22 21:47:19 · 383 阅读 · 0 评论 -
c++基于asio的组播:windows linux通信
上代码,非常简单,使用参数控制发送和接收#define _CRT_SECURE_NO_WARNINGS#include <iostream>// 3rd party includes.#include <asio.hpp>#include <string>#include <thread>using namespace std;using namespace asio::ip;void read(asio::ip::udp::socket&原创 2021-06-13 11:39:44 · 855 阅读 · 1 评论 -
网络安全:基于ARP欺骗的嗅探原理
嗅探器(sniffer) 嗅探器(sniffer)是一种刺探网络中传输数据的工具。为达到这一目的,一般的做法是设置网卡为混杂模式,这样就可以嗅探到所有经过本机网卡的数据(这种一般的sniffer原理不在此阐述)。但是这种sniffer有一个缺点,就是它只适用于共享式局域网,对于交换式局域网无效。因为在交换式局域网中,网络中的数据并不会经过每一台主机的网卡,所以对于交换式局域网,就要用另外一种更为主动的方法去嗅探,那就是基于ARP欺骗的嗅探。 &nb原创 2021-06-10 20:54:31 · 1368 阅读 · 0 评论 -
directx和opengl 电子白板
画图板的几种方法1 使用有界面的qt2 使用mfc3 c# winform4 c# wpf5 使用html56 使用opencv1 是可以跨平台的2 是不可以跨平台的,和3,4 一起说不清楚微软为什么不做跨平台的界面库winform 和wpf 一样不能跨,但是在Visual Studio 2019 16.6版中,针对 .NET Core 平台推出 Winform 设计器,因此使用vs2019 c# 是可以跨平台的。5 可以跨平台6 可以跨平台原创 2021-06-08 08:10:28 · 659 阅读 · 0 评论 -
directshow-faac编码
目的建立一个简单的windows下的工具,采集音频后可以进行算法分析,简单来说:制作工具1、 portaudio2、directshow audio2、libfaac3、ffmpeg其实要选择,我们肯定会选择portaudio, 因为该工具是跨平台的,但是我们制作的是工具,因此依赖越少越好,使用directshow 和libfaac的依赖很少,计划直接使用,ffmpeg强大的工具,我们在编译开关中关掉,使用libfaac。后续算法1、去噪算法2、静音检测静音检测二3、回声消除下载工原创 2021-06-04 19:31:54 · 367 阅读 · 1 评论 -
nodejs 获取内存,网络 ,连接 ,磁盘等等
完整的程序链接下载util建立一个util,计算使用var utils = {}utils.humanFileSize = function(bytes, isDecimal) { isDecimal = (typeof isDecimal !== 'undefined') ? isDecimal : false; if (bytes == 0) { return "0.00 B"; } var base = isDecimal ? 1000 : 1024; var e原创 2021-06-04 10:53:04 · 3117 阅读 · 0 评论 -
d3d9 抓取windows屏幕
抓取桌面的几种方式里面,有GDI,direct3d, win10 的DXGI ,等等以下代码已经在gitee上,使用direct3d方式抓屏,保存png方式图片,可自行下载,代码里面还有一些抓取音频的,这些还没有整理,空了就整理这些代码https://gitee.com/guanzhi0319/capture#include <d3d9.h>#pragma comment(lib,"d3d9.lib")类声明class ScreenCapture9{private: //H原创 2021-06-03 21:49:30 · 1296 阅读 · 0 评论 -
使用mongoose来创建嵌入式websocket客户端和http客户端
使用mongoose来使用websocket客户端和http客户端使用mongoose原因1 嵌入式非常合适2 在简单需要的场合下,不需要其他文件,只需要两个文件包含包含mongoose.h 和 mongoose.c 就可以使用了,比较方便,尤其在嵌入式里面,这两个文件就很有用了,不用其他依赖httpclient#include "httpclient.h"#include "mongoose.h"/* RESTful server host and request URI *///原创 2021-05-27 20:12:37 · 4303 阅读 · 4 评论 -
centos gcc 版本安装9.3 c++17
gcc -v可以看到gcc的版本,centos下一般是4.8.5安装版本9.3yum install centos-release-scl -y && yum install devtoolset-9-gcc* -y && scl enable devtoolset-9 bash再次查看[root@VM-0-12-centos bin]# gcc -vgcc version 9.3.1 20200408 (Red Hat 9.3.1-2) (GCC)...原创 2021-05-24 18:18:05 · 1864 阅读 · 2 评论 -
go-文件读写-db
目的1 写一个文件字符串的小型db,将ueerid写入文件,下次再次写入时,先查找有无2 读出时比对,读的时候是使用一行一行读的,这里如此使用是因为还要扩展到多个字段,现在是一个字段3 暂时不使用算法,等下次需求再扩展show me the code注:写入时一定要每个写入"\n"package mainimport (“bufio”“fmt”“io”“io/ioutil”“os”“strings”)//注意写入时一定要写入一个\nfunc User_Write(img_pa原创 2021-05-24 13:15:33 · 525 阅读 · 0 评论 -
rtsp视频解码-分析-转发http-flv ws-flv webrtc
说明因为该代码没有完全完成,所以完整代码没有放上来,如果需要,可以将email发送给我,我把代码发送给大家。但是最主要的关键部分已经贴出来了,图为接收rtspserver的视频,接收播放,分析,并转发flv。框架在完成以后,一种是调用c++的opencv直接分析,一种是调用python 去做,思考成熟以后,再决定。rtsp 解码使用live555 ,在一个线程中接收class c_rtspthread:public c_thread{ int v_headlen = 0; c_rtsp原创 2021-05-23 17:45:57 · 4297 阅读 · 11 评论 -
go发布http 文件server
package mainimport ( "log" "net/http" "os")func main() { os.Mkdir("file", 0777) http.Handle("/file/", http.StripPrefix("/file/", http.FileServer(http.Dir("file")))) err := http.ListenAndServe(":8080", nil) if err !=原创 2021-03-14 21:58:46 · 304 阅读 · 0 评论 -
简洁的c++http协议获取内容(二)--获取服务器图片
1 需求 获取http server的图片用http协议获取server上的图片,前面有文章使用socket直接获取http内容之一,链接如下:简洁的c++http协议获取内容一2 使用boost的asio 来获取图片,读者可以自行修正成异步获取,这里是同步获取boost的asio有很多好处,不同于其他封装,可以使用同步,异步,协程方式获取,这里使用的是同步,调用一个函数返回图片内存和图片大小,当然,读者可以修改,这里只是一个demo。show me th e code#include <原创 2021-05-19 16:53:07 · 1687 阅读 · 2 评论 -
投放屏幕upnp协议探究抓包
其它的关于DLNA的介绍就不多说,要了解DLNA需要了解upnp,因为DLNA在upnp之上,初学者可以从http://www.upnp.org下载upnp的资料.也欢迎大家加入197683240 DLNA交流群。upnp分为四步:发现 、描述 、控制 、事件发现当一个UPnP的设备加入网络,并想知道什么UPnP服务在网络上可用,它发送一个发现消息多播地址239.255.255.250端口1900通过UDP协议。此消息包含一个头,类似于一个HTTP请求。该协议有时被称为为HTTPU(HTTP通过UDP原创 2021-05-05 22:22:38 · 3487 阅读 · 1 评论 -
压缩数据成JPG到内存-windows
无废话,直接上代码show me the code 头文件#include <Windows.h>#include <comdef.h>#include <gdiplus.h>#include <map>using namespace std;using namespace Gdiplus;#pragma comment(lib, "gdiplus.lib")class DGIWin32Plus{ Bitmap * _bitma原创 2021-04-29 13:14:30 · 289 阅读 · 0 评论 -
自由读写配置文件的艺术[java c++ node](二)
使用java c++ nodejs 读写配置文件,跳过注释原创 2021-03-16 13:37:38 · 240 阅读 · 1 评论 -
live555 windows下编译以及修订
live555 的好处live555 rtsp写得非常好用,client尤其好原创 2021-03-04 15:14:56 · 458 阅读 · 1 评论 -
c++自由读写配置ifstream(一)
使用ifstream读写配置ifstream标准c++的读写是非常方便的,效率也很不错,但是有几点需要注意的地方。如下的配置文件 in.txt#[email protected] author:钱波 qianbo 2021-02-28##field id(int):address(varchar):width(int):height(int)1 rtsp://127.0.0.1/l.264 1280 720//camera12 rtsp://127.0.0.1/l.264 1280 720原创 2021-02-28 11:50:02 · 1013 阅读 · 0 评论 -
go的优势--链表与结构体使用
一、go语言的优势1 可以使用脚本和可执行两种方式1、这种方式用脚本执行 go run test.go2、这种方式编译可执行 go build test.go2 跨平台不依赖运行库3、脚本方式成功直接就可以编译成可执行,脱离运行库3 语言精练易懂,如c,并发和并行自然4、go func() ,直接运行新线程或者协程5、注意并发和并行概念是不一样的二、数据结构:使用链表在使用go的过程中,不可避免使用hashmap 和 list,很多人写一个例子直接链表里面就放入数值,如整形,或者str原创 2021-02-27 08:05:08 · 422 阅读 · 0 评论 -
RTP发送和接收(有图为证)
RTP协议接收和播放前面讲过RTP协议的重要性,说过发送RTP协议RTP接收首先定义RTPFrame结构体,一般来讲,我们都是12字节头部,但不是一定的,自行扩展是允许的,具体看RTP的头部字节含义。maker是代表结束,为1,没有结束为0,还有一个更简单的方法,当一帧结束时,timstamp一定会改变,也可以这样来断定,具体来说,也没有一帧的概念,或者称为一个nalu视频的切换。ok,show me the code,注意,像时间戳,seq no,以及ssrc等都是网络字节序,是大端格式,读者必须将原创 2021-02-26 19:19:50 · 2006 阅读 · 0 评论 -
tensorflow,Anaconda和 vscode 如何连接以及问题解决
主要是为了解决安装tensorflow的问题,tensorflow新版本已经不分gpu和cpu版本了,不需要再独立安装cpu,gpu版本,安装运行的时候自动查找是否有gpu,这个确实已经非常厉害了,能在Anaconda的环境下,再使用vscode,这个更方便,因为你写完java,写个go,再写个python,只要在vscode里面运行就行,多方便。Anaconda安装完了以后可以使用来创建自己的环境:创建环境conda create name查看自己有多少个环境conda list下载非常原创 2021-02-24 07:24:12 · 934 阅读 · 0 评论 -
在代码中实用协程(二)
第一篇的链接:在代码中实用协程(一)在网络处理程序中,一个协程正在接收网络请求者,一个协程正在循环发包,另一个协程中正发生错误,删除链接。问题:是否可以循环链表同时进行删除和添加操作先看一段流程#mermaid-svg-qp52QPHl2O5uoL6W .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-qp原创 2021-02-22 22:17:01 · 219 阅读 · 0 评论 -
webrtc 和 rtp 协议
rtp协议rtp协议为实时传输协议原创 2021-02-20 21:13:06 · 2178 阅读 · 0 评论 -
实用的无锁队列(二)
上次的修改一下链接在此:[无锁队列一]//c_buffer.hclass c_data{private: s_memory v_root = NULL; s_memory *v_r = NULL; s_memory *v_w = NULL; int v_num = 0;public: ~c_data() { s_memory_block * pos = v_root.v_next; int num = 0; while (1) { int flag = pos-&g原创 2021-02-20 19:21:30 · 211 阅读 · 0 评论 -
实用的无锁队列(一)
写一个无锁队列的好处针对应用场景写无锁队列好处是能够得到额外的cpu释放1、 atomic_thread_fenceC++11的原子库标准定义了一个可移植的函数atomic_thread_fence(),函数采用一个参数来指定fence的类型,内存屏障2、atomic_compare_exchange_strong定义数据结构1、状态typedef enum enum_status{en_read = 1, //can only read nowen_write = 2,//can on原创 2021-02-20 17:24:20 · 772 阅读 · 0 评论 -
零拷贝系统的制作
1、减少memset 和memcpy的使用经常看到程序员使用memset和memcpy,一层一层的拷贝耗cpu是比较多的,需要争取零拷贝字节memset一块内存需要看是否必要,在写rtp程序的时候,看见过有程序眼memset一块内存,也就是mtu大小的缓存,mtu一般在1000到1500之内,每发一次包,就memset一次,完全每必要,因为你每次拷贝进去,那就很费,拷贝过程已经把缓存清掉了,没有必要事先memset 一次制作服务器的过程中,零拷贝系统的写法其实比较简单,就是预留空间,在写flv和rtm原创 2021-02-19 00:19:11 · 402 阅读 · 1 评论