ошибка setsockopt WSAEADDRNOTAVAIL

Источник:

WSADATA WSAData;
SOCKET sock;
if (WSAStartup(MAKEWORD(2,2), &WSAData)!=0) {
printf("\nProblem with WSAStartup\n\n");
return FALSE;
}
if ((sock = WSASocket(AF_INET,SOCK_RAW,IPPROTO_TCP, 0, 0, WSA_FLAG_OVERLAPPED)) == INVALID_SOCKET) {
WSACleanup();
printf("\nProblem with WSASocket\n\n");
return FALSE;
}
int flag = 1;
if (setsockopt(sock,IPPROTO_IP, IP_HDRINCL,(char *)&flag,sizeof(flag)) == SOCKET_ERROR) {
printf("getsockopt failed with error: %u\n\n", WSAGetLastError());
closesocket(sock);
WSACleanup();
return FALSE;
}

Каждый раз, когда я запускаю это в своей программе, я получаю:

getsockopt failed with error: 10049

10049 — это код ошибки для WSAEADDRNOTAVAIL, что означает «Запрошенный адрес недопустим в своем контексте».

Пожалуйста, помогите, я понятия не имею, почему я продолжаю получать эту ошибку.

0

Решение

Вы указали неверный протокол в своем звонке WSASocket() попробуйте указать IPPROTO_TCP как:

WSASocket(AF_INET,SOCK_RAW,IPPROTO_TCP, 0, 0, WSA_FLAG_OVERLAPPED)
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]