簡體   English   中英

setsockopt錯誤WSAEADDRNOTAVAIL

[英]setsockopt error 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的錯誤代碼,表示“所請求的地址在其上下文中無效”。

請幫助,我不知道為什么我總是收到此錯誤。

您在對WSASocket()調用中指定了無效的協議,請嘗試將IPPROTO_TCP指定為:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM