使用Linux 原始套接字抓取数据链路层上IEC61850-9-2(LE) SV数据包并显示的参考程序
来源:互联网 发布:女士休闲鞋新款淘宝网 编辑:程序博客网 时间:2024/05/22 06:21
目标:在linux下使用C语言的原始套接字来接收以太网数据链路层上的数据,如果接收的数据是IEC61850-9-2 SV类型,则打印。。。。仅供参考!
源代码:
- #include <stdio.h>
- #include <unistd.h>
- #include <sys/socket.h>
- #include <sys/types.h>
- #include <linux/if_ether.h>
- #include <linux/in.h>
- #define BUFFER_MAX 2048
- int main(int argc, char *argv[])
- {
- int sock, n_read, eth_type;
- char buffer[BUFFER_MAX];
- char *eth_head;
- if((sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL))) < 0)
- {
- fprintf(stdout, "create socket error/n");
- exit(0);
- }
- while(1)
- {
- n_read = recvfrom(sock, buffer, 2048, 0, NULL, NULL);
- if(n_read < 42)
- {
- fprintf(stdout, "Incomplete header, packet corrupt/n");
- continue;
- }
- eth_head = buffer;
- eth_type=((unsigned char)eth_head[16])*16*16+(unsigned char)eth_head[17];
- if(eth_type==0x88ba){ //judge wether the eth_type is iec61850 sv
- printf("\n----------------IEC61850-9-2 SV---------------------\n");
- int i=0;
- for(i=0;i<n_read;i++){
- printf("%.2X ",(unsigned char)eth_head[i]);
- if(((i+1)%16)==0) printf("\n");
- }
- printf("\n----------------------------------------------------\n");
- }
- }
- }
运行效果:
(------------------完---------------------)
0 0
- 使用Linux 原始套接字抓取数据链路层上IEC61850-9-2(LE) SV数据包并显示的参考程序
- 使用Linux 原始套接字抓取数据链路层上IEC61850-9-2(LE) SV数据包并显示的参考程序
- 利用原始套接字(sock_raw)编写的抓取ip数据包的小程序
- 用原始套接字收发数据包程序
- 原始套接字抓取所有以太网数据包与分析
- 使用原始套接字实现数据包捕获
- 基于数据包的原始套接字
- 【Linux网络编程】原始套接字实例:发送 UDP 数据包
- 原始套接字&&数据链路层访问
- 原始套接字的使用
- 原始套接字的使用
- 原始套接字的使用
- UNIX环境编程------原始套接字---原始套接字编程实例: 接收的链路层数据包,并对其进行简单分析
- 使用原始套接字编程实现简单的ping程序
- LINUX原始套接字--原始套接字的魔力(上)(转)
- 以原始套接字的方式 截获流经本机网卡的IP数据包(转)
- 原始套接字的使用之编程实现DoS(拒绝服务)攻击程序
- 原始套接字SOCK_RAW发送UDP数据包
- js serializeArray方法
- 5、Angular中的$timeOut定时器
- word2vec原理概述
- 迭代子模式(Iterator)
- man ascii,cal,xxd,mdfind
- 使用Linux 原始套接字抓取数据链路层上IEC61850-9-2(LE) SV数据包并显示的参考程序
- Objective-C基础学习笔记(七)-类的本质与SEL
- linux上安装配置vsftpd
- 使用Storm实现实时大数据分析
- 黑马程序员——Java语言简述
- Java多态性的实现方式
- Oracle11g导出空表
- 文件的Access\Modify\Change时间
- Python学习实例1:实现MD5加密