我在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版本?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top