操作系统:

ubuntu 2.6.24

g++

网络没有问题

程序原理是 :

1,先创建一个RAW的socket,

2,再把网卡设为混杂模式。

3,使用recvfrom开始抓包。

症状描述:

recvfrom一直阻塞,不返回任何值:

下面是代码:

#include // for AF_INET SOCK_RAW

#include // for socket

#include // for sockaddr_in

#include // for strerror

#include // for errno

#include // for ioctl

#include // for ifreq

#include

#include

#include

#define DIE(x) printf(x);printf("Error Infor = [ %s ] ",strerror(errno));

exit(1);

#define BUFF_SIZE 2048

#define PORT_NUMBER 12345

struct ifreq ifr;

int main(int argc,char *argv[])

{

int sock;

sockaddr_in addr_in;

// 网上也有人用 sock = socket(AF_INET,SOCK_PACKET,htonl(EH_P_IP)),我试了下,结果和 这个一样

if (-1 == (sock = socket(AF_INET, SOCK_RAW,htonl(ETH_P_ALL))))

{

DIE("Create socket failed.n")

}

// 用ifconfig试了下,我的网卡是eth1

strcpy(ifr.ifr_name, "eth1");

if (ioctl(sock, SIOCGIFFLAGS, &ifr) == -1)

{

DIE("ioctl failed.n");

}

ifr.ifr_flags |= IFF_PROMISC;

printf("Interface is %s.n",ifr.ifr_name);

if (ioctl(sock, SIOCSIFFLAGS, &ifr) == -1)

{

DIE("Second ioctl failed.n");

}

printf("Interface %sn",ifr.ifr_name);      // 这里用 $ifconfig eth1 查看网卡 属性,成功设置混杂模式

char buff[BUFF_SIZE];

socklen_t sock_len = sizeof(buff);

printf("Begin capture.n");

while (true)

{

printf("peek.n");

memset(buff, 0, sizeof(char) * sock_len);

// 问题就在这里,一直阻塞,没有任何返回值

sock_len = recvfrom(

sock ,buff ,sizeof(buff) ,0 ,(sockaddr *)&addr_in ,&sock_len);

buff[sock_len] = '';

printf("%sn",buff);

}

return 0;

}

搞了几天了,搞不定.

谢谢

|

28.4 Raw Socket Input

The first question that we must answer regarding raw socket input is: Which

received IP datagrams does the kernel pass to raw sockets? The following rules

apply:

Received UDP packets and received TCP packets are never passed to a raw

socket. If a process wants to read IP datagrams containing UDP or TCP packets,

the packets must be read at the datalink layer, as described in Chapter 29.

---------------UNPv2

linux查看程序recvfrom,Linux网络抓包的程序 [使用recvfrom之后无限阻塞]相关推荐

  1. 【学习点滴】linux调试工具、cmake和网络抓包

    目录 gdb 多进程调试 多线程调试: gdb底层原理 Linux下查看服务器端的并发连接个数: Valgrind memcheck strace Linux下,绑定1024以下的端口需要root权限 ...

  2. 安卓抓包工具 linux,Android 下使用tcpdump网络抓包方法

    Android 下使用tcpdump网络抓包方法 抓包需要tcpdump以及Root权限,tcpdump在本文后有下载. 首先把tcpdump传进手机,用adb命令(放SD卡有时会有问题,我一次可以用 ...

  3. Linux下使用libpcap进行网络抓包并保存到文件

    libpcap是一个抓取网络数据报文的C语言函数库,使用这个库可以非常方便的抓取网络上的报文,方便我们分析经过我们设备上的各种报文: 1.libpcap安装 下载文件:libpcap-x.x.x.ta ...

  4. linux 网卡包存储,Linux下使用libpcap进行网络抓包并保存到文件-Go语言中文社区

    libpcap是一个抓取网络数据报文的C语言函数库,使用这个库可以非常方便的抓取网络上的报文,方便我们分析经过我们设备上的各种报文: 1.libpcap安装 下载文件:libpcap-x.x.x.ta ...

  5. linux 抓包生成文件,Linux下使用libpcap进行网络抓包并保存到文件(函数介绍)

    libpcap是一个抓取网络数据报文的C语言函数库,使用这个库可以非常方便的抓取网络上的报文,方便我们分析经过我们设备上的各种报文: 使用libcap库编译时都要在后面加上-lpcap选项 使用pca ...

  6. Linux系统抓包回放,Linux下24小时持续网络抓包(TCPDUMP)

    适用于CentOS/REHL/Ubuntu/Debian等,抓出来的包可用Wireshark直接打开分析. 参考文章: 原文的脚本相互调用时,名称有些问题,已修改 1.安装tcpdump 执行(Ubu ...

  7. WinPcap网络抓包分析程序--总结

    应付大作业写的一个程序,先给出程序的运行界面 程序的核心内容是抓包然后分析数据,我做的最多的也是协议分析这块内容.上面首先给出的是当前网络的上传下载速度,这块内容我是参考Windows性能计数器来写的 ...

  8. 关于Linux 网络抓包的一些笔记整理

    写在前面 遇到一个 ping 单通 的情况,需要抓包分析下,所以整理这部分笔记 博文内容涉及: HTTP/TCP 抓包分析 Demo ICMP 抓包分析 Demo Nginx 抓包分析用户名密码 De ...

  9. 网络抓包与流量在线分析系统的设计与实现-基于libpcap在MacOS上实现 记录这愉快(DT)的一周

    网络抓包与流量在线分析系统的设计与实现-基于libpcap在MacOS上实现 记录这愉快(DT)的一周 要求: 基于LINUX系统设计并实现一个网络流量的分析系统.该系统具有以下功能:(1)实时抓取网 ...

最新文章

  1. 百度编辑器(1.4.3—net版)上传图片路径及其他配置
  2. IBM收购Q1 Labs
  3. J2SE的30个基本概念
  4. Windows10下git bash中添加wget下载工具
  5. Java NIO系列教程(三) Buffer
  6. Drupal 覆写系统样式
  7. Spring Cloud Feign 请求压缩 、Feign的日志级别配置
  8. android 安卓市场,安卓市场(Android Market).doc
  9. pythonint函数的参数_向嵌入的Python函数传递两个参数(int和array)
  10. 855计算机应用基础,2017年曲阜师范大学信息技术与传播学院855计算机应用基础考研导师圈点必考题汇编...
  11. 实现动态验证码的思路
  12. Lua程序设计--全局变量
  13. GIS和RS里面的一些小问题
  14. js中的数组Array定义与sort方法使用示例
  15. 「管理数学基础」4.1 模糊数学:模糊现象与模糊集、隶属函数、模糊集的运算、水平截集与分解定理
  16. 读 《.Net 之美》解析.Net Remoting (应用程序域)-- Part.1
  17. pytest框架(三)
  18. 50元打造双网卡负载均衡服务器(Network Load Balancing)
  19. 2020-08-07#自学编程方法论# 怎么学到后面越来越难?达克效应在作祟!
  20. 谷歌浏览器翻译插件使用不了,替代品 AnyTranslation

热门文章

  1. 对于Listview未满一屏添加footerView 满了一屏幕将View固定在屏幕下方的解决方案
  2. 台积电和三星都变脸了,美国图谋失败,外媒:拜登心都碎了
  3. 数字图像处理实验(二)
  4. 万字长文,学会ElasticSearch,这一篇就够了!
  5. matlab预测未来gdp,matlab对国内生产总值(GDP)建立马尔可夫链模型(MC)并可视化...
  6. QQmusic imitations record 第二天
  7. Java8 ~ Java17 新特性
  8. CRM客户管理系统的作用和四大优势
  9. python如何对excel批量加密_批量解除excel密码保护 可多个密码,python
  10. 设计模式之工厂方法模式