【发布时间】:2012-11-13 08:34:18
【问题描述】:
来源:
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 的错误代码,意思是“请求的地址在其上下文中无效。”
请帮忙,我不知道为什么我不断收到此错误。
【问题讨论】:
-
你编译成64位吗?
-
我编译成win32,我想保持32而不是64。
-
您使用的是哪个版本的windows、编译器和SDK?
标签: c++ c winapi sockets setsockopt