Question

Je me bats avec des prises premières dans Win32 et maintenant je suis bloqué, la fonction soetsockopt me donne l'erreur 10022 (argument invalide), mais je pense que je passe les bons arguments ... bien sûr que je me trompe 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;
}

Tout le monde sait ce qui se passe à mon code?

Était-ce utile?

La solution

Pour autant que je me rappelle que vous devez utiliser int on = 1 au lieu de char ...

Autres conseils

Vous devez utiliser DWORD 1 ou bool vrai, il y a beaucoup de documents qui montrent code avec char, int, DWORD, bool, mais le droit est livre ou DWORD, peut-être dans certains systèmes int ... mais actuellement il a travaillé pour moi bool.

Par ailleurs, je l'ai trouvé erreur 10014 WSAEFAULT lors de l'exécution de la même fonction setsockopt avec IP_HDRINCL dans Win7, il fonctionne sous XP, mais en Win7 il échoue toujours et ne sais pas pourquoi ... peut-être est désactivé dans récente les versions de Windows?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top