自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(156)
  • 问答 (3)
  • 收藏
  • 关注

原创 select函数出现No such file or directory错误

项目中,实际使用的是特定的设备节点,当 select 函数的最后一个参数 tv_usec 设置超过1s时,就会出现 No such file or directory 错误。但是使用标准输入测试时,不会出现该问题,并且 select 的超时也是准确的,故该问题应该是由于操作的设备节点内部处理出现了问题。在嵌入式开发中,调用 select 函数出现。

2023-10-19 15:07:52 436

原创 TCP协议的RST标志

下文中的内容多数来自【参考】中的文章,这边进行一个整理和总结,后续会慢慢增加各个 RST 包的测试代码,便于理解。

2023-05-29 10:26:19 2735

原创 Linux网络编程之recv函数

返回值为-1,并且 (errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN) 的情况下认为连接是正常的,继续接收。

2023-05-26 09:51:51 2185

原创 Linux多线程编程pthread_create传参的问题

但是我们传入值时,此时编译会出现报警,提示:从指针强制转换为不同大小的整数,这是由于void * 和 int 类型的长度是不一致的,我们可以通过打印 sizeof(void *) 和 sizeof(int) 来验证。所以在传参时可以传入静态变量的地址或动态分配的内存地址,这样就可以避免值异常和不同长度的类型之间的转换。从上述结果来看,执行结果并没有出现异常,但是在项目中,当传入线程的参数为局部变量的地址时,由于函数结束后会回收该地址,如果又重新分配给其他变量使用,这时候就会出现值异常。

2023-05-24 20:09:35 1221

原创 LD_LIBRARY_PATH简介

在嵌入式开发中,我们可能把自己实现的应用和动态库放入自定义目录,比如,我们将实现的应用放入。这是因为无法找到库文件,这时就需要使用。这时候,再去执行应用就可以正常运行了。当我们执行应用时,此时如果需要链接。此时库文件就不在系统的缺省目录。

2023-05-10 10:09:47 632

原创 VSCode查看和编辑远程服务器的代码

百度查找是说安装 Remote Development 插件,但是我的版本不兼容,如下图:但是我看到 Remote-SSH 插件也是实现一样的功能,所以直接安装 Remote-SSH 插件,如下图:安装成功后,左边的窗口中会出现一个 “远程资源管理器”,如下图:打开配置文件配置远程服务器相关信息更改设置,找到 Show Login Terminal 并勾选,如下图:点击连接按钮选择服务器的平台输入密码连接上服务器之后,就可以打开自己需要编辑的代码目录,如下图:如果需要连接多个服务器,只需要在 config

2023-04-24 19:59:45 2724

原创 将指针强制转换为 `unsigned long long` 类型的使用方法

类型或其他整型的使用方法。

2023-04-20 19:26:16 768

原创 结构体内定义函数指针的问题

正确的做法是:在结构体内部定义如上特征的函数指针时,该函数指针成员需要直接使用 struct xxx 作为参数类型。另外,若其他地方还需要使用函数指针,可以在结构体定义的下方再给函数指针取别名。定义一个结构体,结构体内成员含有函数指针,函数指针的参数中包括了该结构体。

2023-04-19 15:06:12 138

原创 交叉编译Linux下网络性能测试工具 - iperf3

因为是静态编译,只需要将编译得到的程序 iperf3 放入目标板即可,iperf3 在 src 目录下。

2022-08-26 11:23:51 555

原创 交叉编译Linux下压力测试工具 - stress-ng

如果提示不存在,则可以进入到,搜索 stress-ng 的最新版本,进行下载。

2022-08-17 20:07:03 1239

转载 Linux网络接口操作之ioctl-1_接口参数

第一个参数fd指定一个由open(2)/socket(2)创建的文件描述符;第二个参数request指定操作的类型,即对该文件描述符执行何种操作;第三个参数为一块内存区域,通常依赖于request指定的操作类型。内核版本2.6.32.5ioctl(2)使用structifreq与/或structifconf结构执行网络接口相关的操作,这两个结构的地址作为ioctl(2)的第三个参数。union{};union{...

2022-07-25 19:01:22 2392

转载 交换机的交换原理、mac学习机制和老化机制

若交换机与某台主机长时间未通信,交换机就会把该主机的 mac 地址从 mac 地址表里删除掉,等下次通信时重新学习地址。mac 地址表默认老化时间为300秒(5分钟),可以通过命令修改。

2022-07-11 10:13:13 3923

转载 Fragroute 安装和使用

文章目录1 Fragroute简介1.2 fragroute的工作原理1 Fragroute 安装2 Fragroute 使用2.1 Fragroute的命令行选项2.2 Fragroute 的组成1 Fragroute简介大体就是Fragroute欺骗NIDS检测的方法是在保证victim的ip stack可以正确重组的情况下,对含有攻击特征串报文进行tcp分段和ip分片,同时塞入大量的错误分片报文,打乱顺序后发出,从而达到欺骗NIDS的目的。1.2 fragroute的工作原理fragroute

2022-07-02 17:21:34 1130

原创 TCP Connect 函数超时的问题

TCP 客户端通过 connect 函数连接服务器时,若服务器此时不在线或者当前网络不正常,会在 connect 函数中阻塞(默认情况下系统使用阻塞式 socket),直到超时时间,而这个超时时间是由内核规定的,这会导致连接时间较长,此时若是客户端还需要完成其他活动,则会影响正常业务。此时,我们可以通过将链路设置成非阻塞模式,并通过 select 函数设置超时时长,在超时时间内轮询套接字是否有可写权限,若有可写权限则进一步通过 getsocket 函数确认是否连接上服务器(因为有可写权限不仅是连接上服务器这

2022-06-15 14:01:57 5333

转载 IP 数据包格式

IP 数据包是一种可变长分组,它由首部和数据负载两部分组成。首部长度一般为20-60字节(Byte),其中后40字节是可选的,长度不固定,前20字节格式为固定。数据负载部分的长度一般可变,整个 IP 数据包的最大长度为65535字节。版本:【4位】指 IP 协议版本。通信双方使用的版本必须一致,IPv4 值为0100,IPv6 值为0110。首部长度:【4位】表示首部的长度,IP 头的最大长度为60字节,而该字段占4位,最大表示的十进制数为15,所以该字段的值*4才代表首部长度所占的字节数.

2022-05-18 17:50:43 5185 1

转载 移植iptables扩展依赖问题

最近在移植 docker 到裸机上(非发行版)遇到些问题,其中比较难搞的就是 iptables 老是报错找不到 target:iptables failed: iptables --wait -A DOCKER-ISOLATION-STAGE-1 -j RETURN: iptables v1.6.1: \ Couldn't load target `standard':No such file or directory经过上网搜索发现是在 iptables 动态载入模块的时候,找不到 xtables

2022-05-17 14:04:12 1148

原创 Linux 下设置 SVN 忽略的目录和文件

$ sudo vi /etc/subversion/config进入文件后找到如下语句:这个是我

2022-04-22 13:48:33 1084

原创 Linux 下 cp 命令复制多个文件

目录结构如下,用于后续举例:├── dir_test1│ ├── a│ ├── b│ └── c├── dir_test2└── dir_test3 ├── a_1 ├── a_2 └── a_3复制一个文件夹下的多个文件将 dir_test1 中的多个文件,如 a,b,c 复制到文件夹 dir_test2 中,并且不需要每个文件前都添加路径,方法如下:$ cp dir_test1/{a,b,c} dir_test2复制名称相似的多个文件将

2022-04-14 14:14:16 8362

转载 I/O复用的理解

I/O 复用就是单个线程通过记录跟踪每一个 Sock(I/O流)的状态来同时管理多个 I/O 流。假设你是一个机场的空管,你需要管理到你机场的所有的航线,包括进港,出港,有些航班需要放到停机坪等待,有些航班需要去登机口接乘客。你会怎么做?最简单的做法,就是你去招一大批空管员,然后每人盯一架飞机,从进港,接客,排位,出港,航线监控,直至交接给下一个空港,全程监控。那么问题就来了:很快你就发现空管塔里面聚集起来一大票的空管员,交通稍微繁忙一点,新的空管员就已经挤不进来了。空管员之间需要协调,屋子里

2022-04-13 11:10:54 1169

原创 WPS 表格中单元格文字后插入公式

之前一直不知道,怎么在单元格文字后加入公式,记录一下,备忘。需要实现:“被打断的番茄数” 后面的数字为实际番茄数之和。效果如下:实现方法:通过 & 实现文字和公式的组合,文字需要用双引号括起来,如下:="被打断番茄数:"&SUM(G20:G26)...

2022-03-29 11:09:59 4515

原创 测试攻击机伪装成目标机 IP 给目标机发送攻击报文是否成功

测试Linux环境下,攻击机伪装成目标机发送数据包给目标机,即源地址和目标地址都为目标机的IP地址,看目标机是否能够接受到该数据包。测试环境:A主机(Ubuntu):192.168.10.20B主机(Ubuntu):192.168.10.2测试步骤:测试连通:在A主机中发送ping包给B主机,命令:ping 192.168.10.2,测试结果如下,证明网络是通的:在B主机开启 wireshark,设置条件 tcp and tcp.port == 80 and ip.dst == 192.

2022-03-28 09:51:36 2904 3

原创 sqlite3 内存占用不断增加的问题

文章目录1 背景2 问题3 排查4 问题原因5 解决方法1 背景嵌入式项目,故选用轻量级数据库 sqlite3;通过 sqlite3 存储日志,日志数量较多,数据库文件大于500M;嵌入式系统内存400M左右。2 问题在集成过程中出现如下问题:通过 sqlite3_exec 函数不断往数据库中插入日志,内存占用不断增加;通过 select count(*) from table_name获取日志的条数,内存迅速增大,增加的内存约等于数据库文件的大小。开始一直以为是内存泄露了,不断排

2022-03-17 14:13:50 6584 6

转载 /proc/meminfo 各字段代表的含义

MemTotal: 45964 kB //所有可用的内存大小,物理内存减去预留位和内核使用。系统从加电开始到引导完成,firmware/BIOS要预留一些内存,内核本身要占用一些内存,最后剩下可供内核支配的内存就是MemTotal。这个值在系统运行期间一般是固定不变的,重启会改变。MemFree: 1636 kB //表示系统尚未使用的内存。MemAvailable: 8496 kB //真正的系统可用内存,系统中有些内存虽然已被使用

2022-02-16 17:17:14 715

原创 sqlite3 函数返回值

#define SQLITE_OK 0 /* Successful result *//* beginning-of-error-codes */#define SQLITE_ERROR 1 /* Generic error */#define SQLITE_INTERNAL 2 /* Internal logic error in SQLite */#define SQLITE_PERM 3 /* Access permis

2021-12-23 10:19:42 742

原创 sqlite3_column_type 函数的返回值全是5(SQLITE_NULL)

问题:调用 sqlite3 数据库的 sqlite3_column_type 函数返回值全是5(SQLITE_NULL)原因:这可能是由于SQL 语句当前没有指向有效的行,所以结果是未定义的。函数描述如下:

2021-10-28 11:13:07 815

原创 编译strptime函数时,出现隐式声明报警的解决方法

编译的时候出现错误:warning: implicit declaration of function ‘strptime’; did you mean ‘strftime’? [-Wimplicit-function-declaration]看如下定义,有一个宏开关,解决办法:编译的时候加上 -D _XOPEN_SOURCE#define _XOPEN_SOURCE /* See feature_test_macros(7) */#include <time.h>/* 把指定时间s

2021-09-28 10:12:35 1823

原创 交叉编译sqlite3数据库

首先到官网下载 Linux 版本的源码:sqlite-autoconf-xxxxxxx.tar.gz,xxxxxxx 代表版本号,下载最新版本即可。解压$ tar xvzf sqlite-autoconf-xxxxxxx.tar.gz进入解压后的目录$ cd sqlite-autoconf-xxxxxxx编译配置$ ./configure CC=/usr/local/arm/bin/arm-linux-gcc --host=arm-linux --prefix=/usr/tm..

2021-09-18 09:36:37 387

原创 Linux查看文件夹的大小

Linux查看文件夹的总大小,不包含子目录和文件:du -sh 路径Linux查看文件夹大小及其子文件的大小:du --max-depth 1 -lh 路径linux查看一个文件夹的大小的命令为:du --max-depth 1 -lh 该文件夹的完整路径例,查询/var文件夹的大小:du --max-depth 1 -lh /vardu 递归查询该路径下所有文件的大小(若...

2021-08-18 11:41:35 439

原创 Nmap使用方法

文章目录Nmap简介Nmap使用方法扫描技术扫描技术端口指定和扫描顺序服务/版本检测举例简单扫描(nmap ip)全面扫描(nmap -A ip)探测指定端口的开放状态探测N个最有可能开放的端口Nmap简介端口扫描是 Nmap 最基本最核心的功能,用于确定目标主机的 TCP/UDP 端口的开放情况。默认情况下,Nmap 会扫描1000个最有可能开放的 TCP 端口。Nmap 通过探测将端口划分为6个状态:open:端口是开放的closed:端口是关闭的filtered:端口被 Firewal

2021-08-18 11:02:22 5078

转载 Linux网络命令之 `Hping3`

用法: hping3 host [options] -h --help 显示帮助 -v --version 显示版本 -c --count 发送数据包的数目 -i --interval 发送数据包间隔的时间 (uX即X微秒, 例如: -i u1000) --fast 等同 -i u1000...

2021-08-17 17:21:25 7617

转载 TCP 协议中 FLAG 的含义

文章目录TCP FLAG 标记TCP连接的三次握手TCP断开的四次挥手连接复位无效的TCP标记RST攻击RST攻击的防御TCP FLAG 标记TCP标记和他们的意义如下所列:F:FIN - 结束;结束会话S:SYN - 同步;表示开始会话请求R:RST - 复位;中断一个连接P:PUSH - 推送;数据包立即发送A:ACK - 应答U:URG - 紧急E:ECE - 显式拥塞提醒回应W:CWR - 拥塞窗口减少TCP连接的三次握手一个虚拟连接的建立是通过三次握手来实现的,具体步骤

2021-08-17 17:00:29 3718

转载 Linux 通过 iptables 实现 nat 转发

标记一下,今天想让一台Red Hat Enterprise Linux 7开通iptables的nat转发功能,找了半天。A服务器:192.168.30.20/24B服务器:192.168.30.1/24,eth0; 192.168.40.1/24,eth1C服务器:192.168.40.20/24目标:让A可以ping和ssh到c机器。这就需要通过B服务器来跳转。操作过程:1、在B服务器上开启内核路由转发参数临时生效:echo “1” > /proc/sys/net/ipv4/ip

2021-08-17 09:40:26 3946

转载 Linux 网络命令之 `ifconfig`

11111

2021-07-29 09:55:13 1235

转载 计算机网络常用性能指标

参考资料:《计算机网络(第七版)》1 速率在计算机网络中速率指的是数据的传输速率,即每秒传输的比特数量,它也称为数据率或比特率。速率是计算机网络中最重要的一个性能指标,速率的单位是 bit/s,有时候也写为 b/s 或者 bps。2 带宽在计算机网络中,带宽用来表示网络的通信线路传输数据的能力,即在单位时间内网络中通信线路所能传输的最高速率,由此可知,带宽的单位就是速率的单位bit/s,即比特每秒。从上图来看,该网卡的带宽是100Mb,即每秒最高能传输100Mb的数据量,注意:这里是以Mb为

2021-07-27 14:14:05 3676

转载 Linux下限制带宽的方法

对 Linux 服务器网卡进行带宽限制的办法:1、安装 iprouteyum -y install iproute2、限制网卡带宽A. 限制 eth0 网卡的带宽为 500kbit:tc qdisc add dev eth0 root tbf rate 500kbit latency 50ms burst 15kbB. 限制 eth0 网卡的带宽为 1mbit:tc qdisc add dev eth0 root tbf rate 1mbit burst 10kb latency 70m.

2021-07-26 14:17:13 4611

原创 台式机通过笔记本上网的方法

1 应用场景有一台台式机,一台笔记本,笔记本通过 wifi 连接到 Internet,台式机通过网线连接笔记本,并通过笔记本实现访问外网的功能。2 实现的步骤笔记本连接上 wifi台式机通过网线连接到笔记本配置笔记本网络A. 右击任务栏右下角的网络图标,选择 “打开网络和Internet” 设置。B. 在打开的设置窗口中,点击 “更改适配器选项”。C. 双击连接 wifi 的无线网卡。D. 点击 “属性”。E. 在弹出的对话框中,切换到 “共享” 选项卡。勾选 “允许其

2021-07-16 17:39:40 10893 1

转载 Linux 下 TC 命令原理及详解<五>

TC+IPTABLES+HTB+SFQ对某人限制:iptables -t mangle -I PREROUTING 1 -s 192.168.xx.xx -j MAKR –set-mark 6# iptables -t mangle -I PREROUTING 2 -s 192.168.xx.xx -j RETURNu32的应用tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 ……这就是所谓的 u32 匹配,可以匹配数据包的任意

2021-07-10 15:13:39 3980 1

转载 Linux 下 TC 命令原理及详解<四>

历史tc 由 Alexey N. Kuznetsov 编写,从 Linux 2.2 版开始并入 Linux 内核。Linux 从 kernel 2.1.105 开始支持 QoS,不过,需要重新编译内核。运行 make config 时将 EXPERIMENTAL _OPTIONS 设置成y,并且将 Class Based Queueing (CBQ), Token Bucket Flow, Traffic Shapers 设置为 y,运行 make dep; make clean; make bzilo

2021-07-10 15:13:28 1966 1

转载 Linux 下 TC 命令原理及详解<三>

文章目录1 简介1.1 流量控制包括以下几种方式1.2 流量的处理由三种对象控制2 QDisc2.1 不可分类 QDisc2.2 可分类的 QDisc(CLASSFUL QDISC)3 操作原理4 命名规则5 单位6 TC 命令对 QDisc、类和过滤器的操作1 简介Tc 用于 Linux 内核的流量控制。1.1 流量控制包括以下几种方式SHAPING(限制)当流量被限制,它的传输速率就被控制在某个值以下。限制值可以大大小于有效带宽,这样可以平滑突发数据流量,使网络更为稳定。shaping(限

2021-07-10 14:39:50 5289

转载 Linux 下 TC 命令原理及详解<二>

QoS无非就是使用了linux的2个工具,tc 和 iptables,不管管理界面做的多么垃圾还是多么强大,都是最终翻译成这2个工具的script去执行,并且无论多么NB的管理界面都有很大的局限性(整半天界面也就是实现了命令行下的几个参数的功能而已),所以无法完全发挥这2个工具的作用。不要以为TOMATO的QoS就很NB,其实就是对这2个工具做了比较好的封装罢了,都是linux,用好了,分不出什么高下的。如果你懂linux shell编程,并且懂数据挖掘与机器学习的理论,你完全可以根据一些算法写出带有人工

2021-07-09 17:36:18 2306

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除