![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
网络编程
文章平均质量分 64
网络相关编程
it潮人
这个作者很懒,什么都没留下…
展开
-
inotify机制监控文件系统事件原理及使用
添加一个watch对象,fd为具体的inotify实例描述符,pathname为监控的目录或者文件,mask为具体的事件,成功返回非负整数,失败返。当有具体的事件以后可以读取对应的。1 /proc/sys/fs/inotify/max_user_instances // 默认是128。3 /proc/sys/fs/inotify/max_queued_events // 默认是16384。2 /proc/sys/fs/inotify/max_user_watches // 默认8192。转载 2023-12-28 18:17:59 · 762 阅读 · 0 评论 -
配置电脑使Wireshark能抓到有VLAN标签的报文
与有线网卡设置类似,主要区别在第6步,找到网卡所处路径:计算机\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class{4d36e972-e325-11ce-bfc1-08002be10318}\0012,\0012为网卡ASIX AX88772C USB2.0 to Fast Ethernet Adapter所在位置,通过查看DriverDesc的值可确认是否是需要修改注册表配置的网卡。选择网卡,右键属性【以太网状态页】,单击状态页中 属性按钮。转载 2023-09-18 15:25:00 · 3604 阅读 · 1 评论 -
c语言 利用联合和结构体将IP地址进行打印
在联合体内部将十进制数字存储起来,得到的是一个占有四个字节的整形,而最终要将每个字节用点隔开将每个字节中的二进制数字打印出来,形成我们所看见的形式。在联合体中,存储一个int整型和四个char类型时,只开辟四个字节的空间,而这时int和char其实是公用这四个字节的空间,char就是int,int就是char,所以通过ji将一个数存进int类型后,再将这个数以char类型能拿来,这时拿出来的就是每个字节的数了,然后又以10进制进行打印,让IP地址呈现在我们眼前。转载 2023-08-29 09:28:32 · 394 阅读 · 0 评论 -
使用inet_pton验证字符串是否是合法的ipv4或ipv6地址
inet_pton是用来讲ipv4和ipv6地址转换成二进制形式inet_pton()函数原型:#include <arpa/inet.h> int inet_pton(int af, const char *src, void *dst);返回值:返回值为1 表示 函数执行成功返回值为0 表示 对指定的协议来说 网络地址不是有效的的返回值为-1 表示 地址族不是有效的 即af是无效值所以 我们可以根据返回值判定是否是合法的ipv4或ipv6地址代码如下:...转载 2020-07-02 08:39:56 · 983 阅读 · 0 评论 -
自旋锁(spinlock) 解释得经典,透彻
加锁机制转载 2022-07-14 11:04:11 · 5203 阅读 · 0 评论 -
如何在makefile里面添加打印?
使用info/warning/error增加调试信息方法1: $(info, "here add the debug info")但是此不能打印出.mk的行号方法2: $(warning, "here add the debug info")方法3: $(error "error: this will stop the compile")这个可以停止当前makefile的编译方法4: 打印变量的值$(info, $(TARGET_DEVICE) )...原创 2021-07-20 17:02:48 · 4798 阅读 · 0 评论 -
linux之dup和dup2函数解析
1、文件描述符在内核中数据结构 在具体说dup/dup2之前,我认为有必要先了解一下文件描述符在内核中的形态。一个进程在此存在期间,会有一些文件被打开,从而会返回一些文件描述符,从shell中运行一个进程,默认会有3个文件描述符存在(0、1、2),0与进程的标准输入相关联,1与进程的标准输出相关联,2与进程的标准错误输出相关联,一个进程当前有哪些打开的文件描述符可以通过/proc/进程ID/fd目录查看。 下图可以清楚的说明问题(图片来源于百度百科): 文件表中包含:文件状态标志、当前转载 2020-10-26 15:42:51 · 413 阅读 · 0 评论 -
linux下c语言的多线程编程
这篇文章主要介绍了linux下c语言的多线程编程,需要的朋友可以参考下我们在写linux的服务的时候,经常会用到linux的多线程技术以提高程序性能多线程的一些小知识:一个应用程序可以启动若干个线程。线程(Lightweight Process,LWP),是程序执行的最小单元。一般一个最简单的程序最少会有一个线程,就是程序本身,也就是主函数(单线程的进程可以简单的认为只有一个线程的进程)一个线程阻塞并不会影响到另外一个线程。多线程的进程可以尽可能的利用系统CPU资源。1创..转载 2020-09-28 17:07:50 · 600 阅读 · 0 评论 -
DHCP服务的八种报文类型(通俗易懂的总结)
DHCP报文类型 描述1、DHCP Discover DHCP客户端请求地址时,并不知道DHCP服务器的位置,因此DHCP客户端会在本地网络内以广播方式发送请求报文,这个报文成为Discover报文,目的是发现网络中的DHCP服务器,所有收到Discover报文的DHCP服务器都会发送回应报文,DHCP客户端据此就可以知道网络中存在的DHCP服务器的位置。2、DHCP Offer DHCP服务器收到Discover报文后,就会在所配置的地址池中查找一个合适的ip地址,加上相应的租约期限和其他配置信息(转载 2020-09-22 15:10:58 · 7035 阅读 · 0 评论 -
Linux Call Trace原理分析
本文介绍了在Linux环境下根据EABI标准进行call trace调试的一般性原理。本文所说的call trace是指程序出问题时能把当前的函数调用栈打印出来。本文只介绍了得到函数调用栈的一般性原理,没有涉及Linux的core dump机制。下面简单介绍powerpc环境中如何实现call trace。内核态call trace内核态有三种出错情况,分别是bug, oops和panic。bug属于轻微错误,比如在spin_lock期间调用了sleep,导致潜在的死锁问..转载 2020-09-17 20:19:05 · 2667 阅读 · 0 评论 -
poll方法的基本概念
一、select函数简单回顾在上篇博客中,我们详细了解了关于select接口的用法,在学习poll函数之前,我们先对select函数的内容做一个简单的回顾:select优点:目前几乎在所有的平台上支持,其良好跨平台支持也是它的一个优点select缺点:(1)每次调用 select(),都需要把 fd 集合从用户态拷贝到内核态,这个开销在 fd 很多时会很大,同时每次调用 select() 都需要在内核遍历传递进来的所有 fd,这个开销在 fd 很多时也很大。(2)单个进程能够监视的文件描述符的数量转载 2020-08-18 13:57:20 · 2042 阅读 · 0 评论 -
IO多路复用之poll总结
1、基本知识 poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是poll没有最大文件描述符数量的限制。poll和select同样存在一个缺点就是,包含大量文件描述符的数组被整体复制于用户态和内核的地址空间之间,而不论这些文件描述符是否就绪,它的开销随着文件描述符数量的增加而线性增大。2、poll函数 函数格式如下所示:# include <poll.h>int poll ( struct pol转载 2020-08-18 10:58:14 · 248 阅读 · 0 评论 -
bind9的安装及使用
近日想搭一套RAC虚拟机,SCAN解析决定采用DNS,所以就在自己的笔记本上用BIND9.9.3搭了DNS。在这里把步骤跟大家分享一下。下载BIND9下载地址:http://www.isc.org/downloads本文采用的是BIND9.9.3-P2.zip。解压文件到任意位置,运行BINDInstall.exe。由于系统是Win7,所以这里将BIND安装到D盘DNS目录里。安装服务还需要个用户,默认会新建一个named的用户,这里我们可以使用NT AUTHORITY\LocalSe...转载 2020-07-30 09:43:16 · 7265 阅读 · 0 评论 -
网络数据包进入网卡后,在系统中的转换流程图
原创 2020-07-07 10:28:08 · 805 阅读 · 0 评论 -
DHCP回应报文广播还是单播方式深度探究
对DHCP服务器回应报文的抓包实验探究对于DHCP报文中的offer报文和ack报文,到底是以广播还是单播的方式回复给主机,一直存在争议,现做如下抓包实验,具体的来分析DHCP报文出现的“可疑点”。一、 猜想对于DHCP的回复报文到底是广播还是单播的方式回复,这在之前的几次用wireshark抓包实验中都得到了验证,结果是既有单播也有广播,那么我们不妨先假定DHCP的回复方式是广播。二、 实验设计为了验证我们的猜想,肯定需要通过抓包软件抓取实际中的DHCP报文,但是仅仅抓取一次存在偶然性,那么这里转载 2020-06-05 09:49:52 · 4407 阅读 · 1 评论 -
ioctl函数详细说明(网络)
ioctl函数本函数影响由fd参数引用的一个打开的文件。#include<unistd.h>intioctl( int fd, int request, .../* void *arg */ );返回0:成功 -1:出错第三个参数总是一个指针,但指针的类型依赖于request参数。我们可以把和网络相关的请求划分为6类:套接口操作文件操作接口操作ARP高速缓存操作路由表操作流系统下表列出了网络相关ioctl...转载 2020-06-01 17:20:55 · 2455 阅读 · 0 评论 -
ioctl()函数获取本机IP、MAC
#include <sys/ioctl.h>int ioctl(int d, int request, ...);/* Socket configuration controls. */#define SIOCGIFADDR 0x8915 /* get PA address */#define SIOCSIFADDR 0x8916 /* set PA address */#define SIOCGIFHWADDR 0x8927 /* Get hardware addre...转载 2020-06-01 17:19:58 · 508 阅读 · 0 评论 -
inet_ntoa、 inet_aton、inet_addr
inet_addr() 简述:将一个点间隔地址转换成一个in_addr。 #include <winsock.h> unsigned long PASCAL FAR inet_addr( const struct FAR* cp); cp:一个以Internet标准“.”间隔的字符串。 注释: 本函数解释cp参数中的字符串,这个字符串用Internet的“.”间隔格式表示一个数字的Internet地址。返回值可用作Internet地址。所有Internet地址以网络字节转载 2020-06-01 17:16:27 · 821 阅读 · 0 评论 -
sockaddr和sockaddr_in详解
struct sockaddr 和 struct sockaddr_in 这两个结构体用来处理网络通信的地址。一、sockaddrsockaddr在头文件#include <sys/socket.h>中定义,sockaddr的缺陷是:sa_data把目标地址和端口信息混在一起了,如下: struct sockaddr { sa_family_t sin_family;//地址族 char sa_data[14]; //14字节,包含套接字中的目标...转载 2020-06-01 17:13:44 · 276 阅读 · 0 评论