高分请问-怎么设置UDP协议Socket的发送出去的TTL值
高分请教----如何设置UDP协议Socket的发送出去的TTL值
请教高手,我想设定一个UDP包消息的TTL值,采用了下面的方法:
int curTTL = 0; //当前的TTL
int lenTTL = sizeof(int);
//获取当前的TTL值
getsockopt(m_hSocket , IPPROTO_IP, IP_TTL, (char *)&curTTL, &lenTTL);//m_hSocket为UDP套接字
//设置新的TTL值
setsockopt(m_hSocket, IPPROTO_IP, IP_TTL, (char *)&ttl, sizeof(ttl));
//给远程主机发送数据
::sendto( m_hSocket, (const char*)lpBuf, nBufLen, 0, (sockaddr*)&addr_inet, addrlen );
还原TTL值
setsockopt(m_hSocket , IPPROTO_IP, IP_TTL, (char *)&curTTL, sizeof(curTTL));
不知道上面的方法是否正确,还有该如何检验上面的方法的正确性。
谢谢大家了
------解决方案--------------------
udp是不可以读写icmp消息的,需要用raw socket
------解决方案--------------------
请教高手,我想设定一个UDP包消息的TTL值,采用了下面的方法:
int curTTL = 0; //当前的TTL
int lenTTL = sizeof(int);
//获取当前的TTL值
getsockopt(m_hSocket , IPPROTO_IP, IP_TTL, (char *)&curTTL, &lenTTL);//m_hSocket为UDP套接字
//设置新的TTL值
setsockopt(m_hSocket, IPPROTO_IP, IP_TTL, (char *)&ttl, sizeof(ttl));
//给远程主机发送数据
::sendto( m_hSocket, (const char*)lpBuf, nBufLen, 0, (sockaddr*)&addr_inet, addrlen );
还原TTL值
setsockopt(m_hSocket , IPPROTO_IP, IP_TTL, (char *)&curTTL, sizeof(curTTL));
不知道上面的方法是否正确,还有该如何检验上面的方法的正确性。
谢谢大家了
------解决方案--------------------
udp是不可以读写icmp消息的,需要用raw socket
------解决方案--------------------