我正在使用Win32中的原始套接字进行战斗,现在我被卡住了,soetsockopt函数给了我10022错误(无效参数),但我认为我传递了正确的参数...当然我错了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;
}
有人知道我的代码会发生什么吗?
答案 0 :(得分:2)
你应该使用DWORD 1或bool true,有很多文档显示带有char,int,DWORD,bool的代码,但是右边的是book或DWORD,在某些系统中可能是int ...但是目前它工作了对我来说是布尔。
顺便说一句,我在Win7中使用IP_HDRINCL执行相同的函数setsockopt时发现了错误10014 WSAEFAULT,它在XP中工作但在Win7中总是失败并且不知道为什么......也许它在最近被禁用Windows版本?
答案 1 :(得分:1)
据我记得,您需要使用int on = 1
代替char ...