使用libnet, libpcap模拟一个交换机

本文介绍了一种使用libnet和libpcap库将具有双网卡的计算机模拟为交换机的方法,以便另一台计算机可以通过它访问外网。作者通过创建线程分别捕获和处理两个网卡的网络包,并通过判断目标MAC地址来转发数据包。
摘要由CSDN通过智能技术生成
动机是我屋里有两台电脑,但到屋里只有一根外出网线,一台机子有双网卡,我就正好运用我前段学习的libpcap和libnet写了一个数据包转发的小工具,把双网卡的机子模拟成一个交换机,使另一台机子能通过它访问外网,虽然用其它方法以能实现,但这正好是一个练习上面说的两个工具的好地方,还有以可免除当双网卡机子不开机时,另一台机子只要直接接上外网的网线就行了,不用频繁的更改IP。

/*  net data packet transmit tools
 * liujx
 * 2007-4-1
 
*/
#include 
< stdio.h >
#include 
< stdlib.h >
#include 
< string .h >
#include 
< signal.h >
#include 
< netinet / ip.h >
#include 
< sys / time.h >
#include 
< net / ethernet.h >
#include 
< pthread.h >

#include 
< pcap.h >
#include 
< libnet.h >

#define  IN_ETH "eth1"

char   * dev_a,  * dev_b;
pcap_t 
* pt_a,  * pt_b;

pthread_t pid_a, pid_b;
libnet_t 
* net_a,  * net_b;

static   char  errbuf[ 256 ];

void  sigproc(  int  sig );
void *  dev_a_capture(  void   * );
void  dev_a_handle( u_char  * devId,  const   struct  pcap_pkthdr  * h, 
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值