Set IP_HDRINCL à Setsockopt fonction win32
-
12-09-2019 - |
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?
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?