有没有办法从应用程序设置ttl?使用c ++ rh,不使用boost。在/etc/sysctl.conf文件中,net.ipv4.ip_default_ttl不存在,在/ proc / sys / net / ipv4 / ip_default_ttl写入64.我正在向组播组发送流量,并看到TTL = 1。想把它增加到3。 感谢。
答案 0 :(得分:3)
您可以使用IP_MULTICAST_TTL setsockopt()标志为每个套接字配置它。请查看ip和setsockopt的手册页。
如下所示:
void setttl(int sock, uint8_t ttl)
{
int ret = setsockopt(sock, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, sizeof(uint8_t));
if (ret != 0)
printf("Failed to setsockopt(): %s\n", strerror(errno));
}