
夜深人静网络编程
文章平均质量分 54
网络编程系列学习笔记
MrWang.
嵌入式工程师 Linux驱动以及应用程序的开发
知其然知其所以然,每一个文章都会详细解释并给出示例代码可上机运行
不足之处请大家提出,希望与大家一起进步,共勉!
展开
-
十六进制IP转换点分十进制代码
函数返回的是静态分配的内存空间,多次调用该函数会覆盖先前的结果。如果您需要在程序中保存多个IP地址,请将其复制到其他的内存区域或使用更加安全的函数进行转换。当您运行以上代码时,它将首先提示您输入一个十六进制格式的IP地址。请务必确保输入的字符串是正确的,且长度不超过8个字符(不包括字符串结尾符’\0’)。以下是一个可以实现将输入的十六进制格式的IP地址转换为点分十进制格式并输出的简单程序。函数将输入的字符串解析成无符号整数,然后使用。原创 2023-10-23 21:08:26 · 1403 阅读 · 0 评论 -
IP地址打印格式
格式化打印IP地址,调试代码必备原创 2023-05-08 18:34:17 · 2563 阅读 · 0 评论 -
iP地址计算子网掩码(附示例)
默认子网掩码是根据IP地址类别预定义的固定值,它用于将IP地址分成网络部分和主机部分。以IPv4为例,其默认子网掩码由IP地址的第一位数字(即A、B、C、D类)决定。因此,你可以根据IP地址的类别来确定其默认子网掩码,无需进行额外的计算。原创 2023-05-03 19:10:01 · 19081 阅读 · 0 评论 -
数据帧去掉VlanTag的代码(802.1Q)
需要注意的是,此函数假设输入的数据包已经包含Ethernet头部。如果要处理没有Ethernet头部的裸数据包,请在调用该函数之前添加按需添加Ethernet头部。另外,如果您只需要判断并不需要去除TAG,请直接删除strip_vlan()函数中的memmove()和最后一行代码即可。#define VLAN_TAG_LEN 4 // 固定的802.1Q Tag长度。这个函数接受指向数据包缓冲区的指针和缓冲区长度作为输入,在原地修改缓冲区内容。原创 2023-04-30 12:22:51 · 1063 阅读 · 0 评论 -
字节序(附测试本机字节序的代码)
请注意:虽然这种方法可以检测本机字节序,但是这不是一种可移植的方式。因为C语言规范并没有明确定义主机字节序,说不定某些实现可能不遵循传统的字节序,即使借助于系统头文件定义的字节序转换函数也不能完全保证可移植性。该程序首先定义了一个整数变量num,其十六进制值为0x12345678。然后将这个整数指针强制转换为指向字符类型的指针,并将其赋值给指针变量p。最后,程序输出结果以告知用户检测结果。原创 2023-04-30 10:49:17 · 1097 阅读 · 0 评论 -
网络字节序和主机字节序详解(附代码)
和是计算机网络中常用的两种。: 指的是在计算机内部存储数据时采用的字节排序方式。对于一个长为4个字节的整数,若采用大端字节序,则该整数在内存中的存储顺序是:以地址递增顺序依次存储其最高位到最低位的每个字节;若采用小端字节序,则该整数的字节则按照倒序的方式存储于内存中。例如,在大端字节序中,数字127的存储方式如下:: 指的是一种标准的字节序,规定了数据在网络数据传输中采用的字节序,即大端字节序,也被称为网络序(Network Byte Order)。原创 2023-04-30 10:42:00 · 5794 阅读 · 0 评论 -
IO多路复用select、poll、epoll
select的调用会阻塞到有文件描述符可以进行IO操作或被信号打断或者超时才会返回。select将监听的文件描述符分为三组,每一组监听不同的需要进行的IO操作。readfds是需要进行读操作的文件描述符,writefds是需要进行写操作的文件描述符,exceptfds是需要进行异常事件处理的文件描述符。这三个参数可以用NULL来表示对应的事件不需要监听。原创 2022-09-20 09:47:57 · 347 阅读 · 0 评论 -
send()函数recv()函数详解
目录1.send()函数2. recv()函数1.send()函数 函数原型:ssize_t send(int sockfd, const void *buf, size_t len, int flags); 功能:向套接字中发送数据 参数:sockfd:向套接字中发送数据 buf:要发送的数据的首地址 ...原创 2022-04-13 11:03:57 · 6531 阅读 · 0 评论