- 博客(79)
- 资源 (7)
- 收藏
- 关注
原创 rstp要点3:hello、forwarddelay、maxage配置
1. hello、forwarddelay、maxage配置生效2. message age 与 maxage
2022-02-09 19:49:56
2201
原创 C语言长字符串拆分
一、说明C中字符串有时候会出现很长的情况,如果不换行书写查看起来很不方便。长字符串拆分成多行处理也是C规范的一部分。二、方法方法1. 利用双引号" " ,将长字符串分成多个子串换行,C会自动无缝拼接这些字符串。方法2. 利用斜杠 \ , \ 后的换行符会被C忽略,所以可以拆分字符串,但是下一行的空格会被计算在内,可能导致错误。三、例子int main(){ char s1[50] , s2[50]; int slen=0; slen = snprintf(s1, si
2022-02-01 23:09:02
4529
原创 ARP协议基础-部分
一、 相关理解报文走二层转发流程还是三层转发流程是根据进入端口是二层口还是三层口决定的,而不是报文类型。OSI参考模型是用来划分协议的,表明每个协议运行在那个位置,同一层间通过协议进行交互,不同层间通过接口进行交互。ARP协议在TCP/IP模型中划分在网络层,在OSI参考模型中位于数据链路层。ARP报文是由以太网帧进行封装传输的,没有封装进ip包。request报文目的mac全f表明是二层广播数据帧。reply是已知单播数据帧。ARP协议用来寻找指定的IP对应的MAC地址。二、ARP报文(
2022-01-03 20:51:38
1723
原创 C语言:位段
一、定义位段,C语言允许在一个结构体中以位为单位来指定其成员所占内存长度,这种以位为单位的成员称为“位段”或称“位域”( bit field) 。利用位段能够用较少的位数存储数据。二、注意在C语言中,位段的声明和结构(struct)类似,但它的成员是一个或多个位的字段,这些不同长度的字段实际储存在一个或多个整型变量中。在声明时,位段成员必须是整形或枚举类型(通常是无符号类型),且在成员名的后面是一个冒号和一个整数,整数规定了成员所占用的位数。位域不能是静态类型。不能使用&对位域做取地址运算,
2021-11-29 22:38:45
1009
原创 二层网络通信
一、前言基础交换机实现数据链路层数据帧的转发,它连接终端设备,在收到数据帧时进行MAC寻址及数据帧转发。每个交换机维护一个MAC地址表。二、MAC地址MAC地址用于在网络中唯一标识一个网卡,它是全球唯一的。MAC地址由48bit构成,前24位由IEEE分配,后24位由不同生产厂家自己确定。MAC地址通常由12个16进制数表示。三、以太网帧1、格式(1)Ethernet_ll 格式(2)IEEE 802.3 格式2. 数据帧分类(1)单播以太网帧:目的MAC地址为单
2021-11-03 21:23:15
2136
原创 代码查错手段
1. 死循环死循环一定会占满CPU,可以通过查看cpu占用来判断是否有死循环。2. 函数出错,检查方式(1)先检查输入是否正确,参数格式,输入内容。(2)查看对应错误码。(3)确定具体报错位置,定位错误。...
2021-10-31 16:41:12
957
原创 likely与unlikely
一、介绍likely() 与 unlikely()是内核中定义的两个宏。位于/include/linux/compiler.h中,具体定义如下:#define likely(x) __builtin_expect(!!(x), 1)#define unlikely(x) __builtin_expect(!!(x), 0)__builtin_expect是gcc(版本>=2.96,网上写的,我没验证过)中提供的一个预处理命令(这个名词也是网上写的,我想叫函数更好些),有利于代码优化。gcc(
2021-10-31 16:33:54
403
原创 send、recv、sendto、recvfrom
区别send、recv在TCP协议下使用。sendto、recvfrom在UDP协议下使用,也可以在TCP协议下使用,不过用的很少。udp通讯中的sendto()需要在参数里指定接收方的地址/端口,recvfrom()则在参数中存放接收发送方的地址/端口,与之对应的send()和recv()则不需要如此,但是在调用send()之前,需要为套接字指定接收方的地址/端口(这样该函数才知道要把数据发往哪里),在调用recv()之前,可以为套接字指定发送方的地址/端口,这样该函数就只接收指定的发送
2021-10-31 15:02:55
406
原创 c语言的 宏
一、常规宏定义在 C 语言中,可以采用命令 #define 来定义宏。该命令允许把一个名称指定成任何所需的文本,例如一个常量值或者一条语句。在定义了宏之后,无论宏名称出现在源代码的何处,预处理器都会把它用定义时指定的文本替换掉。#define PI 3.1415926#define ARRAY_SIZE 100#define TITLE "*** Examples of Macros Without Parameters ***"#define BUFFER_SIZE (4 * 512)#def
2021-10-31 14:52:02
4458
原创 char, signed char, unsigned char
1. 区别(1) ANSI C 提供了3种字符类型,分别是char、signed char、unsigned char(2)char相当于signed char或者unsigned char,但是这取决于编译器(3)这三种字符类型都是按照1个字节存储的,可以保存256个不同的值(4) signed char取值范围是 -128 到 127(5) unsigned char 取值范围是 0 到 2552. 等价(1)uint_8 等价于 unsigned char,存储大小都是一个字节,表示范围
2021-10-31 14:24:34
719
原创 原码-反码-补码转换
计算机内部使用补码表示二进制数1. 正数的补码=反码=原码2. 负数由原码求补码注意符号位始终保持不变。若已知 负数 -8,则其:原码为:1000 1000,(1为符号位,为1代表负数,为0代表正数)反码为:1111 0111,(符号位保持不变,其他位置按位取反)补码为:1111 1000,(反码 + 1)即在计算机中 用 1111 1000表示 -83. 负数由补码求原码(1)方法1:求负数 原码--->补码 的逆过程。 注意:符号位保持不变!
2021-10-31 14:11:58
1551
原创 C语言常见错误
C语言常犯的错误1. 申请内存后必须加错误检查。申请内存三步:malloc->判断是否申请成功->memset赋值->使用->释放。2. 对函数参数要检查。3. 关键部分要加注释,注释风格要统一。4. 统一编码规范(for/switch等缩进,空格, 注释)。5. 定义debug开关,使用宏统一进行错误处理(FILE、LINE、func)。6. 通常返回值:0表示成功,其他值表示失败。7. 发现了在ip和端口计算中的字节序问题,在处理时要统一字节序。8. 在进行位运
2021-10-11 23:51:26
536
原创 c语言常用初始化函数(字符串、结构体):memset()
memset()<string.h>函数原型:void *memset(void *str, int c, size_t n);复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符返回值:该值返回一个指向存储区 str 的指针。参数(1)str – 指向要填充的内存块。(2)c – 要被设置的值。该值以 int 形式传递,但是函数在填充内存块时是使用该值的无符号字符形式。(3)n – 要被设置为该值的字符数。#include <stdio.h&
2021-10-11 23:44:04
1978
原创 c语言:拷贝内存函数memcpy()
一、memcpy()<string.h>函数原型:void *memcpy(void *str1, const void *str2, size_t n) ;从存储区 str2 复制 n 个字节到存储区 str1;返回值:该函数返回一个指向目标存储区 str1 的指针;// 将字符串复制到数组 dest 中#include <stdio.h>#include <string.h> int main (){ const char src[50]
2021-10-11 23:39:36
3592
原创 c语言:拷贝字符串
一、strcpy():容易溢出头文件:#include <string.h>strcpy() 函数用来复制字符串;其原型为:char *strcpy(char *dest, const char *src);strcpy()是依据 \0 作为结束判断的;通常,我们的 from 都来源于用户的输入,很可能是非常大的一个字符串,因此 strcpy 不够安全;(1)【参数】dest 为目标字符串指针,src 为源字符串指针;(2)注意:src 和 dest 所指的内存区域不能重叠,且d
2021-10-11 23:31:46
6574
原创 TCP协议详解
一、特点基于流的方式。面向连接。可靠通信。在网络状况不佳时候尽量降低系统由于重传带来的带宽开销。通信连接维护是面向通信的两个端点的,而不考虑中间网段和节点。二、协议规定数据分片:在发送端对用户数据进行分片,在接收端进行重组,由TCP确定分片的大小并控制分片和重组;到达确认:接收端接收到分片数据时,根据分片数据序号向发送端发送一个确认;超时重发:发送方在发送分片时启动超时定时器,如果在定时器超时之后没有收到相应的确认,重发分片;滑动窗口:TCP连接每一方的接收缓冲空间大小都固定,接收
2021-10-08 23:55:33
2782
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人