c - (C) 虚拟网络适配器

标签 c linux networking packet data-processing

在 linux 中有没有什么方法可以编程创建一个可以被监听的虚拟网络适配器,这样每当尝试通过适配器发送数据时,都会调用一个方法?

我正在尝试将所有数据包转发到一个 ip 地址,然后将它们的原始位置包含在数据包中。

像这样:

void sendPacket(char to[], char data[])

所以如果我通过虚拟网络适配器 ping google.com,该方法将像这样调用 sendPacket("GooglesIp","Whatever data a ping sends")

最佳答案

我认为您正在寻找的是 Linux 中的 TUN/TAP 设备,它允许程序充当网络接口(interface)。

http://en.wikipedia.org/wiki/TUN/TAP

然后您可以编写一个程序来监听 TUN/TAP 接口(interface)的传入数据,并相应地处理它。基本上,您会将 ping 路由到新的 TUN/TAP 接口(interface),然后让程序从接口(interface)读取数据包,并从那里路由它们。

关于c - (C) 虚拟网络适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7500028/

相关文章:

centos 6.4 上的 mysql 5.5

图形的 Javascript 库(在数学意义上)

代码永远不会被执行 C

c++ - 是否可以将 WebRTC 浏览器转换为原生(C、C++ 或其他)?

c - 字符串比较 - C

linux - 汇编中 EAX,1 和 EBX,1 的区别?

c - 递归算法的内存

linux - 在 Linux 中按所有者查找文件

java - 有没有办法以编程方式检查android上的端口是否打开?

iphone - 在iPhone上,是否可以查出我们连接的是哪个WIFI网络?