原始以太网帧使用Winsock

我正在将一个通信库从Linux移植Windows。 我知道我的做法大部分是什么。 该库使用所有通信的原始以太网级帧。

我正在移植的库使用PF_PACKET系列和struct sockaddr_ll。 浏览完MSDN winsock站点后,我还没有find一个等效的系列/结构。 我的方法应该在这里?

我有一些想法,但我不确定他们是否是我可以使用PF_UNSPEC的好主意,没有具体说明。 我可以通过PF_PACKET表示的数字(这是一个无符号短)我也可以在Windows中做我自己的sockadddr_ll结构。

这些想法对我来说都不是什么好东西,他们只是看起来像是不太可能工作的黑客。

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

我假设你指的是Raw Sockets(你必须编写网络层,传输层和应用层信息)。 新的Windows版本(XP SP2及以上版本)对原始套接字的支持非常有限,并有许多限制。

更多信息 (向下滚动到“原始套接字的限制”)

我相信这个解决方案是使用WinPcap ,它允许你在这些系统上发送原始数据包 。