Frage

Ich bin mit Raw-Sockets in Win32 kämpfen und jetzt stecken Ich bin, die soetsockopt Funktion geben Sie mir die 10022 Fehler (ungültiges Argument), aber ich denke, dass ich die richtigen Argumente übergeben ... natürlich bin ich falsch u_u "

sock = socket(AF_INET,SOCK_RAW,IPPROTO_UDP);
if (sock == SOCKET_ERROR)
{
  printf("Error socket(): %d", WSAGetLastError());
  return;
}
char on = 1;
error =  setsockopt(sock,IPPROTO_IP,IP_HDRINCL,&on,sizeof(on)); 
if (sock == SOCKET_ERROR)
{
  printf("Error setsockopt(): %d", WSAGetLastError());
  return;
}

Jeder weiß, was mit meinem Code passieren?

War es hilfreich?

Lösung

Soweit ich erinnere Sie int on = 1 statt char verwenden müssen ...

Andere Tipps

Sie sollten DWORD 1 oder bool true verwenden, gibt es viele Dokumente, die mit char-Code zeigen, int, DWORD, Bool, aber die richtigen ist Buch oder DWORD, int vielleicht in einigen Systemen ... aber es funktionierte derzeit für mich als Bool.

Übrigens habe ich Fehler 10014 WSAEFAULT gefunden, wenn die gleiche Funktion setsockopt mit IP_HDRINCL in Win7 ausgeführt wird, funktioniert es in XP, aber in Win7 es nicht immer und weiß nicht, warum ... vielleicht ist es in den letzten deaktiviert Windows-Versionen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top