设置IP_OPTIONS选项不成功,WSAGetLastError( )函数返回0值是什么错误?
我参考着说,写了一个ping程序,但是在输入 -r选项时,总是输出:
setsockopt(IP_OPTIONS) failed: 0
这样的错误。其他ping选项的测试都正确
WSAGetLastError( )函数返回0值,这会是是什么错误呢?
望各位大虾支支招!
相关代码如下:
void PingTest(int timeout)
{
int ret;
//创建原始套接字,该套接字用于ICMP协议
m_socket = WSASocket(AF_INET,SOCK_RAW,IPPROTO_ICMP,NULL,0,WSA_FLAG_OVERLAPPED);
//如果套接字创建不成功
if(m_socket == INVALID_SOCKET)
{
printf("WSASocket() failed: %d\n",WSAGetLastError());
return;
}
//若要求记录路由选项
if(RecordFlag) //RecordFlag是一个全局变量,当输入 -r 时,RecordFlag = true
{
//IP选项每个字段用0初始化
ZeroMemory(&IpOption,sizeof(IpOption));
//为每个ICMP包设置路由选项
IpOption.code = IP_RECORD_ROUTE;
IpOption.ptr = 4;
IpOption.len = 39;
ret = setsockopt(m_socket,IPPROTO_IP,IP_OPTIONS,(char*)&IpOption,sizeof(IpOption));
if(ret == SOCKET_ERROR);
printf("setsockopt(IP_OPTIONS) failed: %d\n",WSAGetLastError());
}
.
.
.
.
}