设置IP_HDRINCL在Win32到setsockopt函数
-
12-09-2019 - |
题
我在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;
}
任何人都知道发生在我的代码?
解决方案
据我记得你需要使用int on = 1
代替字符...
其他提示
您应使用DWORD 1或布尔真,有很多的文件,显示与字符,INT,DWORD,布尔代码,但正确的是书或DWORD,或许诠释在某些系统......但现在它的工作我作为布尔。
顺便说一句,我发现错误10014 WSAEFAULT执行相同的功能与setsockopt的IP_HDRINCL在Win7的时候,它工作在XP中,但在Win7它总是失败,不知道为什么...也许这是近禁用Windows版本?
不隶属于 StackOverflow