Юзаю Winsock 2.2. Вот мой код. Пытаюсь поставить опцию инклюда айпи хедера, однако возвращаеться ошибка 10022=( bool bOpt = true; if((sock = socket(AF_INET, SOCK_RAW, IPPROTO_IP)) == SOCKET_ERROR) { printf("Error create socket!\n"); return EXIT_FAILURE; } if (setsockopt(sock, IPPROTO_IP, IP_HDRINCL, (char *)&bOpt, sizeof(bOpt)) == SOCKET_ERROR) { printf("setsockopt(IP_HDRINCL) failed: %d\n", WSAGetLastError()); return EXIT_FAILURE; } помогите , чем могите=)
Пробовал заменить sock = socket(AF_INET, SOCK_RAW, IPPROTO_IP) на sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW) Ничего не помогает...=(
Попробуй вместо bool bOpt = true написать BOOL bOpt = TRUE. bool и BOOL имеют разный размер. bool занимает 1 байт, BOOL (int) - 4 байта.
Dude03 IPPROTO_IP Socket Options: Код (Text): Option - IP_HDRINCL Optval type - DWORD (boolean) When set to TRUE, indicates the application provides the IP header. Applies only to SOCK_RAW sockets. The TCP/IP service provider may set the ID field, if the value supplied by the application is zero. The IP_HDRINCL option is applied only to the SOCK_RAW type of protocol. TCP/IP service provider that support SOCK_RAW should also support IP_HDRINCL.