
网络编程
扳手的海角
这个作者很懒,什么都没留下…
展开
-
331_C++_使用 poll 系统调用函数,用于监视文件描述符(fd)的状态,以确定它是否准备好进行读或写操作
使用 poll 系统调用的函数,监视文件描述符fd的状态,以确定它是否准备好进行读或写操作。函数 Select2 接受一个文件描述符 fd、一个布尔值 send 和一个超时时间 milliseconds 作为参数原创 2024-05-13 09:23:02 · 398 阅读 · 0 评论 -
328_C++_HTTP_HTTP协议传输data数据,为什么要进行base64编解码操作?
HTTP协议是基于文本的。这意味着它主要处理字符数据,而不是二进制数据。发送二进制数据时,将其转换为文本格式,数据就可以作为文本在HTTP协议中传输。原创 2024-05-07 11:24:43 · 432 阅读 · 0 评论 -
248_网络编程_get local ipv4 error、Get MAC error为什么会导致无法上网
如果这些信息无法获取或者获取错误,就会导致无法正确连接到网络,从而无法上网。在网络工程中,"get local IPv4 error"和"Get MAC error"是指获取本地IPv4地址和获取MAC地址时出现的错误。如果DHCP服务器故障或配置不正确,设备无法获取有效的IPv4地址,导致无法上网。网络适配器故障:如果网络适配器(如网卡)发生故障,可能导致无法获取正确的MAC地址,从而影响网络通信和上网功能。硬件故障:物理硬件问题,如网卡损坏或连接问题,可能导致获取MAC地址时出现错误。原创 2023-06-23 11:17:10 · 654 阅读 · 0 评论 -
172_web服务器_form class=“form-inline“、div class=“form-group“、class=“form-control“、span等修饰过得页面,层级递归
图示:html修稿<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>zigbee网页</title> <!--**************【一些JavaScript得链接库】******************--> <!-- 最新版本的 Bootstrap 核心 CSS 文件 -原创 2021-11-03 15:04:20 · 446 阅读 · 0 评论 -
171_web服务器_fseek不断定位到文件末尾,把最后一行文本显示到html的文本框中【js定时发送请求】【js +.c两个文件一起实现】函数:setInterval、fessk、fgetc
图示js/*第一个参数:code 必需。要调用的函数或要执行的代码串。第二个参数:millisec 必须。周期性执行或调用 code 之间的时间间隔,以毫秒计。setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭*/setInterval(function(){ var myxmlhttp=null; myxmlhttp=getXMLHttp原创 2021-11-02 15:48:53 · 335 阅读 · 0 评论 -
170_web服务器_两个需求【1-】获取虚拟机上数据库数据显示到网页 【2-】网页下拉框数据,发送到MQTT服务器上【html实现网页,.js实现内在,.cgi实现内核】
实例:html:–两个功能一起实现在网页(表面)<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>zigbee网页</title> </head> <script type="text/javascript" src="ip.js"></script> <b原创 2021-11-01 17:55:43 · 373 阅读 · 2 评论 -
169_路由器项目_程序运行-配置信息
设置主机、虚拟机的IP和网关(1网段)主机的33虚拟机的同一个网络id内(街道),需要可以互相ping的通(找得到),主机id(门牌号)不一样设置主机、虚拟机的IP和网关(2网段)虚拟机设置开发板设置开发板配IP-/etc/profileReboot指令重启,IP才不会变ifconfig eth0 10.36.145.112 netmask 255.255.255.0 配置IP和子网掩码route add default gw 10.36.145.12 配置网关开发板串原创 2021-11-01 12:01:00 · 379 阅读 · 2 评论 -
168_web服务器_获取select下拉框的option数据,显示到网页的文本框【.html、.js代码一起完成】
图示:html代码<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>zigbee网页</title> </head> <script type="text/javascript" src="ip.js"></script> <body>原创 2021-11-01 11:38:12 · 352 阅读 · 0 评论 -
167_sqlite3一个简单的数据库_单纯的指令操作①
SQLite version 3.36.0 2021-06-18 18:36:39Enter ".help" for usage hints.sqlite> .mode columnsqlite> alter table stu add sex text;sqlite> select * from stu ...> ;id name score sex-- ---- ----- ---1 lu 89.0 2 li 88原创 2021-10-28 16:38:28 · 129 阅读 · 0 评论 -
167_sqlite3一个简单的数据库_回调、非回调方式打印数据内容
第 3 次插入创建失败! constraint failed==============回调方式================这是回调函数,第0次调用第0列 id == 1第1列 name == lu第2列 score == 89.0这是回调函数,第1次调用第0列 id == 2第1列 name == li第2列 score == 88.5==============非回调方式================result[0] = idresult[1] = nameresult原创 2021-10-28 15:36:04 · 224 阅读 · 0 评论 -
167_sqlite3一个简单的数据库_回调函数my_sqlite3_callback,查询此前添加到表格的内容
[sqlite3]./main数据库打开成功!这是回调函数,第0次调用第0列 id == 1第1列 name == lu第2列 score == 89.0这是回调函数,第1次调用第0列 id == 2第1列 name == li第2列 score == 88.5这是回调函数,第2次调用第0列 id == 3第1列 name == ll第2列 score == 87.2数据库关闭成功![sqlite3]sqlite3 myfile_sqlite3.db SQLite versi原创 2021-10-28 14:38:48 · 255 阅读 · 0 评论 -
166_sqlite3一个简单的数据库_初步执行代码完成sqlite
[sqlite3]./main数据库打开成功!数据库关闭成功![sqlite3]sqlite3 myfile_sqlite3.db SQLite version 3.36.0 2021-06-18 18:36:39Enter ".help" for usage hints.sqlite> .tablesstusqlite> select * from stu;1|lu|89.02|li|88.5sqlite> sqlite> .schemaCREATE原创 2021-10-28 11:55:40 · 126 阅读 · 0 评论 -
165_MQTT的安装
发布者 订阅者是 TCP客户端MQtt服务器是 TCP服务器 broker3种信号质量的发送QoS 0 通信要求最弱 发布者发布一次,服务器 和 订阅者最多收到1次QoS 1 通信质量要求稍微强 发布者发布之后,必须要求服务器有一次正常回应,可能之前发了几次其实服务器已经收到并转发了,但是网络环境导致,回复发布者没收到,那么多次发送,服务器多次转发,有可能 订阅者多次收到同样东西并执行,例如,发送开关某一个电磁阀,一定要关掉它,但是多关几次没事,必须要可靠关掉QoS 2 要求最高,原创 2021-10-26 10:42:28 · 346 阅读 · 0 评论 -
164_ubuntu12版本的阿里源,可以使用
首先,备份一下原来的源地址列表文件sudo cp /etc/apt/sources.list /etc/apt/sources.list.old然后进行修改sudo gedit /etc/apt/sources.list可以在里面添加资源地址,我是直接覆盖掉原来的。添加好后保存,再输入 sudo apt-get update 就可以更新了deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiver原创 2021-10-26 10:33:09 · 588 阅读 · 0 评论 -
163_网络编程_IP点分十进制(字符串)形式下,占多少个字节
这是32位ipv4地址,用10进制+句点表示时,所使用内存长度的最大值。111.111.111.111 这是最大长度的一个例子,其中包括4组十进制整数,每组3个,三个句点,再加一个NULL符号,所以总共需要4*3+3+1=16个字节更详细解释...原创 2021-10-24 20:58:13 · 364 阅读 · 0 评论 -
162_附加145路由器项目中所用到的单链表操作_尾插、头插、遍历打印、查找ip、删除节点数据、释放全部、保存终端输入IP到文件、文件中的过滤IP插入到链表
动图:过滤IP的链表#include "ip_file.h"#define ip_config_name "ip_config"//与main.c共用一个结构体指针变量,保存过滤IP链表头节点MY_ROU * roulink_head = NULL;//--------------------操作文件中的过滤IP----------------------//void init_ip_link(){ FILE *ip_config = NULL; ip_config =原创 2021-10-24 16:54:19 · 171 阅读 · 0 评论 -
161_zigbee协调器_温度传感器接收来自路由器+终端的数据包,只有协调器额外加上了温度感应代码,其余三者都一样
动图:原创 2021-10-23 09:50:57 · 301 阅读 · 0 评论 -
160_zigbee协调器_一种判断数据包有没有拿对的方法【掐头去尾发,拿头指针、尾指针去判断】
几个全局变量:》》u8 flag=0;u8 RevBuf[60]={0};//这里为什么要定义成60个字节,因为我知道一帧通常都是小于60个字节,这个数组里面默认都是0,相当于最后以后字节是'\0',其实本质上就是一个字符串u8 ProcBuf[60]={0};//数据处理bufu8 ProcFlag=0;掐头去尾发,执行代码:》》/* 对于一些数据包,我们可以采用,去指针头、指针尾,也就是掐头去尾的方法,判断我们拿到的是不是想要的 大概具体操作就是对头部取地址判断一下 在最后,对尾部最原创 2021-10-22 20:52:44 · 168 阅读 · 0 评论 -
159_蓝牙_使用SM32开发板做转接实现,可以串口收发信息,也可以手机连接蓝牙板子
图片:蓝牙调试串口助手指令-给指定人发送消息:手机蓝牙调试助手发送原创 2021-10-22 19:31:47 · 190 阅读 · 0 评论 -
158_shell脚本_shell脚本中有个语句是if [ -d $1“/“$file ],其中 $1“/“$file是什么意思
$1是指你运用这个脚本后跟着的第一个词组,比如你这个脚本命名为shell.sh,那么shell.sh /etc时,/etc代表$1 , for file in ls $1 这段语法是代表以file为变量枚举出$1也就是/etc下所有文件,For…In 声明用于对数组或者对象的属性进行循环操作...原创 2021-10-21 20:31:25 · 955 阅读 · 0 评论 -
157_附加145路由器项目_arp缓存表的链表操作【与IP链表不同在于,对arp链表内部操作至少需要两个参数:尾插三个参数(头节点、 mac 、ip)、查找两个参数(头节点 、ip)】
#include "arp_link.h"MY_ARP * arplink_head = NULL;//*************************arp缓存表*****************************//arp缓存表尾插MY_ARP *arp_pTailInsert(MY_ARP *head,char *mac,char *ip){ //申请一个待插入的空间 MY_ARP *pi=(MY_ARP*)malloc(sizeof(MY_ARP)); p原创 2021-10-21 19:21:07 · 551 阅读 · 0 评论 -
156_zigbee协议_路由器给协调器发送数据包【信道、IP必须一致!!必须入网,明确目的端口 以及 2个字节的IP地址】【都可以作为发送方、接收方,只需要改变端口、IP是目标的,还是自己的】
动图:路由器想网络中发送数据包–指定目标端口、IP:协调器:接收路由器、终端的数据包–需给自己添加好端口、任务id原创 2021-10-20 20:25:58 · 881 阅读 · 0 评论 -
155_跟上一篇154文章_发消息之前需要做4个步骤【1申请一个消息的空间、2给某个任务发送消息、3把消息从队列取出来、4释放消息空间】
1、osal.c主文件中,先申请空间2、应用层,分文件这里,给用osal_msg_allocate申请的消息空间,赋值,然后通过主文件的发送函数发送出去osal_msg_send1、osal.c中发送消息函数(内部还需要完成两个步骤)-①赋值完成的消息的插入osal_msg_enqueue(插入到队列尾部-单链表)且②触发事件回调函数osal_set_event赋值完成的消息插入osal_msg_enqueue(插入到队列尾部-单链表)–完成队列结构2、触发事件回调函数osal_set_ev原创 2021-10-19 20:53:21 · 181 阅读 · 0 评论 -
154_蓝牙操作系统结构解析_通过ZIgbee协议汇总数据,通过协调器发送出去【三种操作系统之一的osal操作系统、最终执行文件SD_App.c】-带阿里云链接
TI Zigbee协议栈叫做ZSTACKosal操作系统分配编号(任务id)流程图:在osal操作系统中的应用层,自我定义事件触发,完成原创 2021-10-19 20:18:04 · 170 阅读 · 0 评论 -
153_物联网RFID 应答器 卡片_能够更改 16个扇区,的某一个扇区的某一个数据块,的某一个字节,然后进行查看【注意:扇区、块区、字节】
只放置了main.c文件–其余未放置/* 功能:针对于ISO/IEC14443 TypeB类卡的RFID操作 读写器型号兼容:MFRC522,MFRC523,FM17522,FM17550等*/#include <string.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/ioctl.h>#include <sys/types原创 2021-10-19 19:16:39 · 3656 阅读 · 0 评论 -
152_【配合145、146文章进行】B\S_(js实现)web网页向文件中写过滤IP,运行程序,读取文件中IP,插入到过滤IP链表中【web服务器文件、项目文件分开运行】
分开运行cgi-bin文件中的.c#include<stdio.h>#include<stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#include<string.h>int main(){ printf("content-type:text/html\n\..原创 2021-10-16 17:52:51 · 110 阅读 · 0 评论 -
151_B\S—使用boa服务器时,<boa.conf>配置文件中的几个路径需要设置成当前运行文件路径
boa服务器配置原创 2021-10-16 15:50:34 · 174 阅读 · 0 评论 -
150_VsCode-Ctrl+shift+p配置文件
Vscode-Ctrl+shift+p配置文件-共享目錄下原创 2021-10-16 10:54:55 · 450 阅读 · 0 评论 -
149_系统编程汇总
1原创 2021-10-15 19:34:48 · 124 阅读 · 0 评论 -
148_UDP编程_利用setsocketopt()使用嵌套字支持广播,并编写两个程序,其中一个发送广播数据,另一个接收广播数据(0.0.0.255)
串口工具模拟接收方(同一网络id下):广播:–修改套接字(SO_BROADCAST)允许发送广播消息#include <stdio.h>#include <stdlib.h>#include <string.h> // bzero#include <unistd.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>原创 2021-10-15 19:14:41 · 331 阅读 · 0 评论 -
147_路由器项目_遇到的多个文件都需要对同一个变量(链表头节点指针)进行操作问题
先在链表.h中extern声明一个变量再在.c中将其定义成全局变量main.c中同样extern声明一下,证明是外部定义过的变量其余的线程.c文件中,只需要包含一下对应头文件即可原创 2021-10-15 11:08:48 · 154 阅读 · 0 评论 -
146_路由器项目_附加功能:可以拿取文件内IP保存到过滤链表中,过滤IP也可以保存到txt文件,也可以终端输入IP,保存到文件【单链表的尾插、头插、删除指定节点、遍历等】】
动图:ip_file.h:#ifndef IP_FILE_H#define IP_FILE_H#include <stdio.h>#include <string.h>#include <stdlib.h>#include <unistd.h>#include <netinet/in.h>#include <arpa/inet.h>//*************************过滤链表********原创 2021-10-14 19:45:47 · 319 阅读 · 0 评论 -
145_网络编程阶段项目_路由器项目,虚拟机做路由器,完成主机-开发板直接通信(可以互相ping的通)【指定目的MAC(写死)】
成功演示:其他操作指令:抓包成功图片:MakefileCC=gcctarget=main$(target):main.o get_interface.o link.o -lpthread $(CC) main.o get_interface.o link.o -o $(target) -lpthread%*.o:%*.c $(CC) -c $^ -o $@clean: rm -rf *.o $(target)main.c–主要执行文件#include <sys/soc原创 2021-10-14 10:36:01 · 1326 阅读 · 0 评论 -
144_131的_http协议中,创建线程,给线程传递【结构体】的指针变量单位
原创 2021-10-12 12:50:43 · 116 阅读 · 0 评论 -
143_html(B/S服务器)_数字相加、字符串拼接、数字拼接、获取服务器中某个文件内容、相关html操作调用的js文件中的函数【额外注意AJAX对象的确定、拿取指定文件内容的方式GET、POST】
动图:其中拿取文件内容的操作,需要用到服务器下的.cgi文件来完成编译命令:gcc get.c -o get.cgi4.html-数字相加、字符串拼接、数字拼接、获取服务器中某个文件内容 <!DOCTYPE html> <!--http://10.36.145.56:8080/1.html --><html> <head> <meta charset="utf-8" /> <meta n原创 2021-10-11 09:15:22 · 267 阅读 · 0 评论 -
142_html(B/S)_web服务器配置+基本html代码含超链接、form表格、关键搜索词、跳转顶部、底部、指定位置等【服务器文件夹,无法直接拷贝图片】
图示:基础查:HTML拷贝文件到设置web服务器的文件夹下:sudo cp image/ …/web_boa-0.94.13/www/ -R3.html–含表格、跳转<!DOCTYPE html><html> <head> <title>这是表格网页</title> </head> <body> <!--一个单元格占3列-->原创 2021-10-08 19:32:36 · 186 阅读 · 0 评论 -
141_网络编程阶段汇总
网络编程原创 2021-10-05 17:22:51 · 123 阅读 · 0 评论 -
140_【libnet】构造UDP数据包
#if 1 //---构造UDP数据----------//int main(){ char errbuf[248] = ""; // libnet_t * buf = libnet_init(LIBNET_LINK_ADV, "rth0", errbuf); if(errbuf != NULL) { printf("libnet_init error:%s!!\n", errbuf); } libnet_ptag_原创 2021-09-30 17:14:05 · 525 阅读 · 0 评论 -
139_libpcap工具包(==创建原始套接字+接受数据)_libpcap方式设置抓包规则,完成抓包
动图:抓包理解:过滤数据包我们抓到的数据包往往很多,如何过滤掉我们不感兴趣的数据包呢?几乎所有的操作系统( BSD, AIX, Mac OS, Linux 等)都会在内核中提供过滤数据包的方法,主要都是基于 BSD Packet Filter( BPF ) 结构的。libpcap 利用 BPF 来过滤数据包。1)设置过滤条件BPF 使用一种类似于汇编语言的语法书写过滤表达式,不过 libpcap 和 tcpdump 都把它封装成更高级且更容易的语法了,具体可以通过 man tcpdump查看:原创 2021-09-30 17:09:18 · 308 阅读 · 0 评论 -
138_libpcap工具包(==创建原始套接字+接受数据)_打开网络设备,对所有经过eth0网口的数据进行抓取,两种方式pcap_loop、pcap_next抓数据包【注意:基本概念的熟悉】
动图:#if 1//buf :收到的数据包数据void callback(u_char *arg, const struct pcap_pkthdr *h,const u_char *buf){ if(buf != NULL) { unsigned char src_mac[18] = ""; unsigned char dst_mac[18] = ""; sprintf(src_mac,"%02x:%02x:%02x:%02x:%0原创 2021-09-30 16:55:52 · 229 阅读 · 0 评论