使用Winsock的原始以太网帧

时间:2009-04-20 04:39:55

标签: windows linux networking winsock porting

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

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

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

这些想法对我来说都不好看,它们看起来像是不太可能有用的黑客。

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

1 个答案:

答案 0 :(得分:3)

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

More info(向下滚动到“原始套接字限制”)

我认为,解决方案是使用WinPcap,这允许您在这些系统上send raw packets