Pregunta

Estoy luchando con los conectores directos en Win32 y ahora estoy atascado, la función soetsockopt dame el error 10022 (argumento no válido), pero creo que me pase los argumentos correctos ... por supuesto que estoy equivocada 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;
}

¿Alguien sabe lo que sucede a mi código?

¿Fue útil?

Solución

Por lo que yo recuerdo es necesario utilizar int on = 1 en lugar de carbón ...

Otros consejos

Debe utilizar DWORD 1 o bool cierto, hay un montón de documentos que muestran código con char, int, DWORD, bool, pero el más adecuado es libro o DWORD, tal vez en algunos sistemas int ... pero en la actualidad se trabajaron para mí como bool.

Por cierto, he encontrado el error 10014 WSAEFAULT al ejecutar la misma función setsockopt con IP_HDRINCL en Win7, funciona en XP pero en Win7 siempre falla y no sé por qué ... tal vez se desactiva en los últimos versiones de windows?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top