首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用C++访问通过网卡传输的数据

使用C++访问通过网卡传输的数据
EN

Stack Overflow用户
提问于 2009-12-22 08:17:47
回答 3查看 566关注 0票数 0

有没有办法在操作系统内核使用C++或任何语言接收到来自互联网的特定地址的数据之前,通过网卡对其进行控制?

换句话说,有没有一种方法可以访问OSI七层模型,使用C++来控制通过这七层中的任何一层的数据,或者它们只是在逻辑上实现。

如果它们没有在逻辑上实现,并且你可以访问,我想访问从特定地址接收到的通过物理层的包,并在它们移动到下一层之前做一些操作。

另外,是否有用于OSI的模拟软件?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-22 08:39:34

设备驱动程序位于硬件和内核之间,因此这是您唯一的选择。这取决于操作系统,但人们可以用C++为所有主要设备编写设备驱动程序。不过,要准备好遇到普通的C接口。

票数 4
EN

Stack Overflow用户

发布于 2009-12-22 08:38:17

您是否在问,不受信任的应用程序是否可以控制操作系统看到的来自网络的内容?

答案应该是显而易见的。

大多数操作系统都提供了访问来自网络的原始数据的接口,您应该使用这些接口,而不是试图将自己夹在网卡和操作系统之间。

另外,C++ != C#。一点也不接近。

票数 2
EN

Stack Overflow用户

发布于 2009-12-22 08:44:10

您可以创建一个分层的服务提供者,它可以通过将自身插入到winsock堆栈中来拦截数据,但这不会使数据在windows中通过内核和NDIS层时发生短路。这里唯一真正的解决方案是设备驱动程序。此外,还有一些网卡在硬件中实现了自己的TCP/IP堆栈,您可以直接与这些网卡通信,但这些不是很常见。这些方法中的任何一种都不是微不足道的,您正在考虑大量的内核模式C。如果您对此不满意,就不应该尝试这种方式。

您还可以考虑使用winpcap,因为这将为您提供所需的许多功能。http://www.winpcap.org/devel.htm

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1943471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档