Windows 使用Winsock的原始以太网帧

Windows 使用Winsock的原始以太网帧,windows,linux,networking,winsock,porting,Windows,Linux,Networking,Winsock,Porting,我正在将一个通信库从Linux移植到Windows。我知道我的方法在很大程度上是什么。该库使用所有原始以太网级帧进行所有通信 我从中移植的库使用了PF_数据包族和结构sockaddr_ll。浏览MSDN winsock站点后,我还没有找到等效的族/结构。我的方法应该是什么 我有一些想法,但我不确定它们是否是好主意 我可以使用PF_unsec,用于未指定的用途。 我可以传递pfu数据包表示的数字(这是一个无符号的短码) 我也可以在Windows中创建自己的sockadddr__ll结构 这些想法对

我正在将一个通信库从Linux移植到Windows。我知道我的方法在很大程度上是什么。该库使用所有原始以太网级帧进行所有通信

我从中移植的库使用了PF_数据包族和结构sockaddr_ll。浏览MSDN winsock站点后,我还没有找到等效的族/结构。我的方法应该是什么

我有一些想法,但我不确定它们是否是好主意 我可以使用PF_unsec,用于未指定的用途。 我可以传递pfu数据包表示的数字(这是一个无符号的短码) 我也可以在Windows中创建自己的sockadddr__ll结构

这些想法对我来说都不好,只是看起来像是不太可能奏效的黑客


如果有人有任何建议,我将不胜感激。

我假设您指的是原始套接字(您必须在其中写入网络层、传输层和应用层信息)。新的Windows版本(XP SP2及更高版本)对原始套接字的支持非常有限,但有许多限制

(向下滚动至“原始套接字的限制”)


我认为,解决方案是使用,它允许您在这些系统上使用。

好的,原始套接字的限制不适用于我。我的应用程序只升到第二层。也就是说,我只需要渲染/接收以太网帧,不需要TCP/UDP/IP。实际上是这样。看看用WinPcap发送原始数据包的例子,你会发现你需要的:)windows中不允许第3层以下的任何内容。你可以用WinPcap制作和发送TCP数据包-但是你会遇到问题,因为windows TCP.sys仍然会处理任何响应,并且不考虑注入的数据包!