Hy!
Habe wieder einmal ein Problem, diesmal mit Sockets. Habe aus ein paar Tutorials und dem was ich schon über Sockets wusst zusammengebastelt wie man mit RAW-Sockets abeitet. Jetzt versuche ich ein ARP-Packet zu verschicken.
Der Code funktioniert auch soweit, ausser das die Winsock immer einen normalen Ethernet Header vor mein Packet gesetzt hat. Habe nach einigem googeln auch herausgefunden, dass IP_HDRINCL gesetzt sein muss, damit Winsock den eigenen Header weglässt. Lt. MSDN gehört IP_HDRINCL zum Level IPPROTO_IP, also sollte ich es mit
setzten können (hSock ist der Socket-Handle)
Wenn ich das versuche bekomme ich jedoch einen Fehler, nämlich 10022, was lt. MSDN
Kann mir jemand sagen woran das liegt, ich konnte die Lösung leider nicht finden.
mfg
uhu01
Habe wieder einmal ein Problem, diesmal mit Sockets. Habe aus ein paar Tutorials und dem was ich schon über Sockets wusst zusammengebastelt wie man mit RAW-Sockets abeitet. Jetzt versuche ich ein ARP-Packet zu verschicken.
Der Code funktioniert auch soweit, ausser das die Winsock immer einen normalen Ethernet Header vor mein Packet gesetzt hat. Habe nach einigem googeln auch herausgefunden, dass IP_HDRINCL gesetzt sein muss, damit Winsock den eigenen Header weglässt. Lt. MSDN gehört IP_HDRINCL zum Level IPPROTO_IP, also sollte ich es mit
Code:
char bOpt = 1;
setsockopt( hSock, IPPROTO_IP, IPHDRINCL, &bOpt, sizeof( bOpt));
Wenn ich das versuche bekomme ich jedoch einen Fehler, nämlich 10022, was lt. MSDN
Some invalid argument was supplied (for example, specifying an invalid level to the setsockopt function). In some instances, it also refers to the current state of the socket—for instance, calling accept on a socket that is not listening.
Kann mir jemand sagen woran das liegt, ich konnte die Lösung leider nicht finden.
mfg
uhu01