题
我正在做一个项目,我必须制作自定义数据包。也就是说,我必须控制每个数据包头。我正在尝试使用套接字来做到这一点。基本上,我需要做的是:
SOCKET s = socket(PF_UNSPEC, SOCK_RAW, ethernet_type);
ethernet_type 是自定义的、非标准的,例如 0xAAAA。我正在使用 htons()。另外,我最好不要使用 winPcap。
现在,我收到错误 10043,协议不受支持。
该错误消息似乎建议我可以将协议配置到我的系统中,但我不知道该怎么做。
它说:
不支持协议。所请求的协议尚未配置到系统中,或者不存在其实现。例如,套接字调用请求 SOCK_DGRAM 套接字,但指定流协议。
这里有一些不同的问题,所以如果有人有任何意见,我将非常感激。
其他提示
我认为,增加新的协议的套接字调用会是这样相当困难。你必须确保插座支持这一呼吁。我认为你将不得不重新编译socket函数,我不认为这是很容易可以在Windows下。
制作定制的数据包不要求创建新的协议
我认为指定RAW套接的正确的方法是这样的
SOCKET s;
s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
如果你真的想用原始的以太网发挥像你的变量名提示,那么无论你使用WinPcap的驱动程序或写的自己的驱动程序
我不认为还有另外一个“易”解决方案,以原始的以太网。 WinPcap的是相当容易的,所以你可能要看看
不隶属于 StackOverflow